GroupBy和MoreLinq的DistinctBy之间的性能差异

时间:2017-09-05 09:50:00

标签: c# .net linq morelinq

阅读this问题(和回答)我发现至少有两种方法可以让IQueryabe之外的不同项目同时选择要过滤的内容。这两种方法是:

table.GroupBy(x => x.field).Select(x => x.FirstOrDefault());

或使用MoreLinqs DistinctBy

table.DistinctBy(x => x.field);

但该线程并未解释性能差异,何时应该使用另一个。那么我什么时候想要使用另一个呢?

1 个答案:

答案 0 :(得分:3)

他们所做的事情有很大的不同,因此预期会有性能差异。 GroupBy将为原始集合中的每个密钥创建一个集合,然后将其传递给SelectDistinctBy只需要保留一个哈希集,其中包含之前遇到密钥的天气,因此它可以更快。

如果DistinctBy足以让您始终使用它,那么只有在需要每个组中的元素时才使用GroupBy

例如,对于LINQ到EF,DistinctBy运算符将无效。