gpt4 book ai didi

c# - 6 个 List 对象的交集

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

正如我在标题中提到的,我手中有 6 个 List 对象。我想找到他们的交集,除了那些没有项目的人。

intersectionResultSet =
list1.
Intersect(list2).
Intersect(list3).
Intersect(list4).
Intersect(list5).
Intersect(list6).ToList();

当其中一个没有项目时,通常我会得到空集。所以我想从交集操作中排除那些没有项目的。最好的方法是什么?

提前致谢

最佳答案

你可以使用这样的东西:

// Your handful of lists
IEnumerable<IEnumerable<int>> lists = new[]
{
new List<int> { 1, 2, 3 },
new List<int>(),
null,
new List<int> { 2, 3, 4 }
};

List<int> intersection = lists
.Where(c => c != null && c.Any())
.Aggregate(Enumerable.Intersect)
.ToList();

foreach (int value in intersection)
{
Console.WriteLine(value);
}

这已经过测试并产生以下输出:

23

感谢@Matajon 指出在 Aggregate 函数中使用 Enumerable.Intersect 更简洁(并且性能更高)。

关于c# - 6 个 List<int> 对象的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619350/

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