获得distinct的结果(IEqualityComparer comparer)

时间:2014-09-23 16:44:52

标签: c# linq

作为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)之类的内容来获得结果吗?

1 个答案:

答案 0 :(得分:0)

这与IEqualityComparer没有任何关系。它完全基于您提供的方法,在本例中为DistinctDistinct以及返回IEnumerable的所有LINQ方法,尽可能延迟执行,只执行他们实际需要时计算结果所需的工作。