Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
阅读这个问题(和答案),我发现至少有两种方法可以让不同的项目在一段IQueryabe时间内仍然可以选择过滤的内容。这两种方法是:
IQueryabe
table.GroupBy(x => x.field).Select(x => x.FirstOrDefault());
或使用 MoreLinqsDistinctBy
DistinctBy
table.DistinctBy(x => x.field);
但是该线程并没有解释性能差异以及何时应该使用另一个。那么我什么时候想使用其中一个呢?
他们所做的事情有很大的不同,因此性能差异是可以预料的。 GroupBy将为原始集合中的每个键创建一个集合,然后将其传递给Select. DistinctBy只需要保留一个哈希集,其中包含它之前遇到过密钥的天气,因此它可以更快。
GroupBy
Select
如果DistinctBy你总是使用它就足够了,只有GroupBy在你需要每个组中的元素时才使用它。
例如,对于 LINQ to EF,DistinctBy运算符也将不起作用。