怎么能用linq比较两个列表的项目?

时间:2011-02-10 12:10:44

标签: c# linq

我有两个列表,其中一个有5个元素,另一个有4个元素。它们有一些相同的元素,但它们也有不同的元素。我想创建一个包含不同元素的列表。我该怎么办?

注意:5个元素列表是我的主要列表。

2 个答案:

答案 0 :(得分:16)

这个怎么样?

var list1 = new List<int>( new []{1,2,3,4,5});
var list2 = new List<int>( new []{1,3,4});
var list3 = list1.Except( list2);

在这种情况下,list3仅包含2和5。

修改

如果您希望两个集合中的元素都是唯一的,则以下代码就足够了:

var list1 = new List<int>( new []{1,2,3,4,5});
var list2 = new List<int>( new []{1,3,4,7});
var list3 = list1.Except(list2).Union(list2.Except(list1));

输出2,5和7。

答案 1 :(得分:1)

如果您感到好奇,与此相反的是相交

string[] collection1 = new string[] { "1", "7", "4" };
string[] collection2 = new string[] { "6", "1", "7" };

var resultSet = collection1.Intersect<string>(collection2);

foreach (string s in resultSet)
{
    Console.WriteLine(s);
}