c#中分享相似类型的分组列表用于对相似列表进行分组。GroupBy依赖于以适当方式实现Equals/GetHashCode的元素类型。你的问题是模棱两可的,但我的猜测是你希望两个具有相同元素的列表被认为是相同的。我怀疑您需要编写自己的IEqualityComparer实现并将其传递给GroupBy。例如(未经测试):publicclassListEqualityComparer:IEqualityComparer>{publicintGetHashCode(Listinput){if(input==null){return0;}//可以为此使用聚合...inthash=17;foreach(输入中的T项){hash=hash*31+ElementComparer.GetHashCode(item);}返回散列;}publicboolEquals(Listfirst,Listsecond){if(first==second){returntrue;}if(first==null||second==null){returnfalse;}返回first.SequenceEqual(second,ElementComparer);您还可以允许每个ListEqualityComparer实例有一个单独的逐元素比较器,这将允许您以不区分大小写的方式比较(比方说)字符串列表。我假设您在询问如何按自定义类型的对象进行分组。您需要定义对象应该如何相互比较。您可以通过在GroupBy调用中指定IEqualityComparer来执行此操作。如果未指定IEqualityComparer,则使用IEqualityComparer.Default,它检查类型T是否实现System.IEquatable接口,如果是,则返回使用该实现的EqualityComparer。否则,返回一个EqualityComparer,该EqualityComparer使用了T提供的Object.Equals和Object.GetHashCode的重写。以上是C#学习教程:c#同类分组列表分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处:
