c# - 在 LINQ 结果上将 IEnumerable<T> 转换为 List<T>,性能损失巨大

标签 c# linq generics .net-4.0 c#-4.0

在你喜欢的 LINQ 结果上:

var result = from x in Items select x;
List<T> list = result.ToList<T>();

然而,ToList<T>真的很慢,它是否使列表可变,因此转换很慢?

在大多数情况下,我可以管理我的 IEnumerableParalell.DistinctQuery但现在我想将项目绑定(bind)到 DataGridView,因此我需要作为 IEnumerable 以外的东西,有关我将如何在 ToList 或任何替代品上获得性能的建议?

关于 IEnumerable 中的 1000 万条记录, .ToList<T>大约需要 6 秒。

最佳答案

.ToList()什么慢?

比较的话

var result = from x in Items select x;
List<T> list = result.ToList<T>();

var result = from x in Items select x;

您应该注意到,由于查询是延迟计算的,因此第一行根本没有做太多事情。它不检索任何记录。 延迟执行使这种比较完全不公平

关于c# - 在 LINQ 结果上将 IEnumerable<T> 转换为 List<T>,性能损失巨大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162442/

相关文章:

c# - 消除大量通用限制的重组建议

c# - 如何在 C# 中从指向 ULONG 数组的指针中检索值

c# - 正则表达式从表单结果返回值

c# - 停止接收来自 SubscriptionClient 的消息

java - 未经检查强制转换为实现 Map<String, V> 的泛型类

java - Java中的泛型,返回泛型类Set<T>的集合

c# - 在 .NET Core 2.1 控制台应用程序中配置用户 secret

c# - 如果一个字段为空,我如何用 Linq 替换一个值?

C# Lambda => 会产生垃圾吗?

c# - 使用 LINQ 进行字母数字排序