gpt4 book ai didi

c# - 使用 LINQ 选择具有相同子集合的项目

转载 作者:太空狗 更新时间:2023-10-30 01:27:02 25 4
gpt4 key购买 nike

这是伪案例:

class parent{
string name; //Some Property
List<int> myValues;

.......
}
........
//Initialize some parent classes

List<parent> parentList = new List<parent>();
parentList.add(parent123); //parent123.myValues == {1,2,3}
parentList.add(parent456); //parent456.myValues == {4,5,6}
parentList.add(parentMatch); //parentMatch.myValues == {1,2,3}

我的目标是检索父对象列表的查询,其中 myValues 列表是等效的。在这种情况下,它将返回 parent123 和 parentMatch。

最佳答案

因此,如果您实现了 IEqualityComparer,那么您可以将逻辑包装起来并仅使用 GroupBy:

class IntegerListComparer : IEqualityComparer<List<int>>
{
#region IEqualityComparer<List<int>> Members

public bool Equals(List<int> x, List<int> y)
{
//bool xContainsY = y.All(i => x.Contains(i));
//bool yContainsX = x.All(i => y.Contains(i));
//return xContainsY && yContainsX;
return x.SequenceEqual(y);
}

public int GetHashCode(List<int> obj)
{
return 0;
}

#endregion
}

这样调用它:

var results = list
.GroupBy(p => p.MyValues, new IntegerListComparer())
.Where(g => g.Count() > 1)
.SelectMany(g => g);

关于c# - 使用 LINQ 选择具有相同子集合的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3671068/

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