gpt4 book ai didi

c# - 按条件对列表进行分组以创建列表列表

转载 作者:行者123 更新时间:2023-11-30 22:56:46 24 4
gpt4 key购买 nike

我有一个 List<type1> listOfObjects和一个 static方法

bool CheckIfObjectsAreEquivalent(type1 obj1, type1 obj2) .

我想根据等价标准对列表进行分组,即List<List<type1>> result其中每个列表 由根据CheckIfObjectsAreEquivalent等效 对象组成.

另一个重要的方面是,我事先不知道这个分组会产生多少不同的列表,因为所有对象都可能是等价的或没有或任何可能数量的等价组。对象的初始列表 listOfObjects可以由许多对象组成,要查看其中两个对象是否等效,必须使用 CheckIfObjectsAreEquivalent .

我一直在研究使用 .Where 的不同选项和 .GroupBy但我无法让它工作...

有什么想法吗?提前致谢

最佳答案

你可以实现IEqualityComparer<type1>接口(interface),然后使用 GroupBy 中的实现:

public sealed class MyEqualityComparer : IEqualityComparer<type1> {
public bool Equals(type1 x, type1 y) {
// Your method here
return MyClass.CheckIfObjectsAreEquivalent(x, y);
}

public int GetHashCode(type1 obj) {
//TODO: you have to implement HashCode as well
// return 0; is the WORST possible implementation
// However the code will do for ANY type (type1)
return 0;
}
}

然后你可以输入:

var result = listOfObjects
.GroupBy(item => item, new MyEqualityComparer())
.Select(chunk => chunk.ToList()) // Let's have List<List<type1>>
.ToList();

关于c# - 按条件对列表进行分组以创建列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54145928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com