1

我有两个集合,比较它们并希望得到不匹配的项目并放入一个新集合中。我不想使用使用 2 foreach 循环的传统方法。如何使用 linq 和 lambda 表达式来实现它?例如

    int[] collection1 = new int[] { 1, 2, 3, 4, 5 };
    int[] collection2 = new int[] { 2, 3 };
    // Goal: Using Linq and Lambda Expression: the new collection3 should contain 1, 4, 5

编辑:对不起,我忘了提:collection2 是collection1 的子集,因此collection2 中的所有元素都必须存在于collection1 中。

4

4 回答 4

5

像这样的东西?

int[] collection3 = collection1.Except(collection2).ToArray();
于 2013-07-24T08:53:24.753 回答
3
int[] collection3 = collection1.Union(collection2).Except(collection1.Intersect(collection2)).ToArray();
于 2013-07-24T09:05:06.440 回答
2
var result = collection1.Except(collection2).Concat(collection2.Except(collection1)).ToArray();
于 2013-07-24T08:53:54.520 回答
2

您可以使用Enumerable.Except 方法

var result = collection1.Except(collection2);

如评论中所述,如果还应添加第二个集合中的唯一元素,您的代码将如下所示:

var result = collection1.Except(collection2).Concat(collection2.Except(collection1));
于 2013-07-24T08:55:11.657 回答