使用linq查找非交叉数据集

时间:2009-04-03 00:58:03

标签: c# linq

List<int> a = 1,2,3
List<int> b = 2,4,5

output
1,3,4,5

3 个答案:

答案 0 :(得分:38)

诀窍是将Except与两个列表的交集使用。

这应该为您提供非交叉元素的列表:

var nonIntersecting = a.Union(b).Except(a.Intersect(b));

答案 1 :(得分:4)

尝试并测试:

List<int> a = new List<int>(){1, 2, 3};
List<int> b = new List<int>(){2, 4, 5};


List<int> c = a.Except(b).Union(b.Except(a)).ToList();

答案 2 :(得分:0)

另一种方式:

List<int> a = new List<int> { 1, 2, 3 };
List<int> b = new List<int> { 2, 4, 5 };
var nonIntersecting = a.Union(b)
    .Where(x => !a.Contains(x) || !b.Contains(x));