在这里阅读K.Scott Allen的精彩文章:
和所有人平等…匿名类型
简短的答案(我引用):
事实证明,C#编译器针对匿名类型覆盖了Equals和GetHashCode。这两个重写方法的实现使用类型上的所有公共属性来计算对象的哈希码并测试是否相等。如果相同匿名类型的两个对象的属性都具有相同的值,则这些对象相等。
因此,在返回匿名类型的查询上使用Distinct()方法是完全安全的。

在这里阅读K.Scott Allen的精彩文章:
和所有人平等…匿名类型
简短的答案(我引用):
事实证明,C#编译器针对匿名类型覆盖了Equals和GetHashCode。这两个重写方法的实现使用类型上的所有公共属性来计算对象的哈希码并测试是否相等。如果相同匿名类型的两个对象的属性都具有相同的值,则这些对象相等。
因此,在返回匿名类型的查询上使用Distinct()方法是完全安全的。