Vis*_*and 7 c# linq linq-to-entities
我在LINQ中经历了GroupBy方法:
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
IEqualityComparer<TKey> comparer
)
Run Code Online (Sandbox Code Playgroud)
我理解如何使用GroupBy以及它返回的内容.我想了解IEqualityComparer<TKey> comparer
GroupBy中实际使用的含义和含义.
D S*_*ley 11
该IEqualityComparer<TKey>
对象将用于执行两步检查以查看TKey
实例是否与现有组的键"相等",因此应该在该组中:
GetHashCode
根据现有密钥的哈希码检查项目的哈希码(使用).如果它不等于任何这些值,则将其添加到新组中Equals
).如果项目"等于"组密钥,则该项目将添加到该组.如果您还没有提供一个比较器(无论是通过传递null
或使用不具有该参数的重载之一),该"deafult"比较器使用,它使用了TKey
类本身是否实现IEquatable
或任何适用的覆盖Equals
和GetHashCode
.
所以这意味着Equals
和之间的一些关键关系GetHashCode
: