LINQ c#效率

sam*_*cow 3 c# linq performance ienumerable

我需要编写一个查询,从用户为任何给定数据集定义的列中提取不同的值.可能有数百万行,因此语句必须尽可能高效.以下是我的代码.

这个LINQ查询的顺序是什么?有更有效的方法吗?

var MyValues = from r in MyDataTable.AsEnumerable()
               orderby r.Field<double>(_varName)
               select r.Field<double>(_varName); 

IEnumerable result= MyValues.Distinct();
Run Code Online (Sandbox Code Playgroud)

Cᴏʀ*_*ᴏʀʏ 6

对于AsEnumerable()调用或字段转换,我不能说太多,但对于LINQ方面,这orderby是一个稳定的快速排序,应该是O(n log n).如果我不得不猜测,除了orderby应该是的一切O(n),所以总的来说你仍然只是O(n log n).

更新:LINQ Distinct()调用也应该是O(n).

总而言之,Big-Oh对于这件事仍然存在O(Kn log n),其中K是常数.