在C#中的两个列表之间获取不同的列表

时间:2011-07-11 22:54:20

标签: c# list distinct-values set-difference

我有两个字符串列表。如何获取它们之间的不同值列表或从第一个列表中删除第二个列表元素?

List<string> list1 = { "see","you","live"}

List<string> list2 = { "see"}

结果应为{"you","live"}

3 个答案:

答案 0 :(得分:38)

在我看来,您需要Enumerable.Except()

var differences = list1.Except(list2);

然后你可以循环分歧:

foreach(var difference in differences)
{
    // work with each individual string here.
}

答案 1 :(得分:7)

如果您想从第一个列表中获取除第二个列表中的项目之外的项目,请使用

list1.Except(list2)

如果您想获取第一个列表或第二个列表中的项目,而不是两者,您可以使用

list1.Except(list2).Concat(list2.Except(list1))

答案 2 :(得分:1)

  

这是我发现独特的好方法....

     

两个列表中的唯一

        var A = new List<int>() { 1,2,3,4 };
        var B = new List<int>() { 1, 5, 6, 7 };

       var a= A.Except(B).ToList();
        // outputs List<int>(2) { 2,3,4 }
       var b= B.Except(A).ToList();
        // outputs List<int>(2) { 5,6,7 }
       var abint=  B.Intersect(A).ToList();
        // outputs List<int>(2) { 1 }