我们经常会遇到这种情况,有A、B两个数组,需要取出两个数组之间重复的元素(交集Intersect),或者将A数组中的B元素去除(差集Except),又或者合并两个数组并且不出现重复的元素(并集Union),所幸的是LINQ提供了一些方法,可以很直接的获取这些结果。


取两数组的交集:

var arrA = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
var arrB = new[] {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
var arrIntersect = arrA.Intersect(arrB);
foreach (var item in arrIntersect)
{
    Response.Write(item + ",");
}

输出结果为:

2,4,6,8,10,


取两数组的差集:

var arrA = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
var arrB = new[] {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
var arrExceptB = arrA.Except(arrB);
var arrExceptA = arrB.Except(arrA);
foreach (var item in arrExceptB)
{
    Response.Write(item + ",");
}
Response.Write("<br/>");
foreach (var item in arrExceptA)
{
    Response.Write(item + ",");
}

输出结果为:

1,3,5,7,9,
12,14,16,18,20,


取两数组的并集:

var arrA = new[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
var arrB = new[] {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
var arrUnion = arrA.Union(arrB);
foreach (var item in arrUnion)
{
    Response.Write(item + ",");
}

输出结果为:

1,2,3,4,5,6,7,8,9,10,12,14,16,18,20,