作为LINQ初学者,我想知道为什么在Implementing IEqualityComparer<T> for comparing arbitrary properties of any class (including anonymous)中没有人提到实际上必须执行查询才能得到结果。换句话说,只是打电话给
IEnumerable<Person> people = ... ; // some database call here
var distinctPeople = people.Distinct(new PropertyComparer<Person>("FirstName"));
不会触发PropertyComparer中特定Equals(Tx, Ty)
和GetHashCode(T obj)
方法的执行。
消息&#34;扩展结果视图将枚举IEnumerable&#34; (在调试器中)给了我提示。现在,我可以继续使用foreach (var dp in distinctPeople)
之类的内容来获得结果吗?
答案 0 :(得分:0)
这与IEqualityComparer
没有任何关系。它完全基于您提供的方法,在本例中为Distinct
。 Distinct
以及返回IEnumerable
的所有LINQ方法,尽可能延迟执行,只执行他们实际需要时计算结果所需的工作。