我正在通过LINQ中的GroupBy方法:
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector,
IEqualityComparer<TKey> comparer
)
我了解如何使用GroupBy及其返回的内容。我想了解
IEqualityComparer<TKey> comparer
的重要性及其在GroupBy中的实际用途。 最佳答案
IEqualityComparer<TKey>
对象将用于执行两步检查,以查看TKey
实例是否“等于”现有组的键,因此应位于该组中:
GetHashCode
)与现有键的哈希码进行比较。如果不等于这些值中的任何一个,则将其添加到新组Equals
)。如果该项目“等于”组 key ,则将该项目添加到该组。 如果不提供比较器(通过传递
null
或使用不具有该参数的重载之一),则使用“默认”比较器,如果该比较器实现TKey
或IEquatable
的任何适用替代,则它使用Equals
类本身和GetHashCode
。因此,这意味着
Equals
和GetHashCode
之间存在一些关键关系:关于c# - GroupBy和IEqualityComparer <TKey>比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32355018/