正在获取distinct的结果(IEqualityComparer comparer)
本文关键字:IEqualityComparer comparer 结果 获取 distinct | 更新日期: 2023-09-27 18:24:16
作为一名LINQ初学者,我想知道为什么在实现IEqualityComparer<T>用于比较任何类(包括匿名类)的任意属性,该查询实际上必须执行才能获得结果。换句话说,只需拨打IEnumerable<Person> people = ... ; // some database call here
var distinctPeople = people.Distinct(new PropertyComparer<Person>("FirstName"));
将不会触发PropertyComparer中特定Equals(Tx, Ty)
和GetHashCode(T obj)
方法的执行。
调试器中的消息"展开结果视图将枚举IEnumerable"给了我提示。现在,我可以继续进行类似foreach (var dp in distinctPeople)
的操作来获得结果吗?
这与IEqualityComparer
完全无关。它完全基于您提供给Distinct
的方法。Distinct
和所有返回IEnumerable
的LINQ方法都尽可能推迟执行,只在实际需要时执行计算结果所需的工作。