阅读this问题(和答案)后,我发现至少有两种方法可以从IQueryabe
中获取不同的条目,同时仍然可以选择要筛选的内容。这两种方法是:
table.GroupBy(x => x.field).Select(x => x.FirstOrDefault());
或使用MoreLinqs DistinctBy
table.DistinctBy(x => x.field);
但是,这个线程不能解释性能差异,也不能解释我什么时候应该使用其中一个而不是另一个。那么我什么时候想用一个而不是另一个呢?
发布于 2017-09-05 10:49:52
他们所做的事情有很大的不同,因此性能差异是预期的。GroupBy
将为原始集合中的每个键创建一个集合,然后将其传递给Select
。DistinctBy
只需要保存一个带有它以前遇到过的密钥的hashset,这样它就可以更快了。
如果DistinctBy
足够让您始终使用它,那么只在需要每个组中的元素时才使用GroupBy
。
另外,对于LINQ,例如,DistinctBy
运算符将无法工作。
https://stackoverflow.com/questions/46051984
复制相似问题