【发布时间】:2012-10-01 20:54:16
【问题描述】:
我需要编写一个查询,从用户为任何给定数据集定义的列中提取不同的值。可能有数百万行,因此语句必须尽可能高效。下面是我的代码。
这个 LINQ 查询的顺序是什么?有没有更有效的方法来做到这一点?
var MyValues = from r in MyDataTable.AsEnumerable()
orderby r.Field<double>(_varName)
select r.Field<double>(_varName);
IEnumerable result= MyValues.Distinct();
【问题讨论】:
-
确定这一点的最佳方法是在 SQL 探查器运行时运行 LINQ 查询。您可以看到实际的 SQL 查询,并据此在 SSMS 中生成执行计划。
-
“这个 LINQ 查询的顺序”是什么意思?您想知道语句按什么顺序执行吗?
-
@Pheonixblade9:实际上,通过调用
AsEnumerable(),SQL 脚本非常基础。orderby和select都在本地运行。 -
@L.B:我猜他的查询填充
MyDataTable正在执行GROUP BY或DISTINCT;我猜上面的 LINQ 是一个 LINQ-to-Objects 查询。 -
@Pheonixblade9:Linq-To-DataSet 是 Linq-To-Objects 的子集。
标签: c# performance linq ienumerable