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

本文关键字:列表 两个 之间 获取 | 更新日期: 2023-09-27 18:02:00

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

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

结果应该是{"you","live"}

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

看来你需要Enumerable.Except():

var differences = list1.Except(list2);

然后你可以遍历这些差异:

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

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

list1.Except(list2)

如果您想获取第一个列表中的项或第二个列表中的项,但不能同时获取两个列表中的项,则可以使用

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

这是我找到独特的好方法....

是两个列表中唯一的

        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 }

以下是我的答案。在两个int列表中找到不同的值,并将这些值赋给第三个int列表。

List<int> list1 = new List <int>() { 1, 2, 3, 4, 5, 6 }; 
List<int> list2 = new List<int>() { 1, 2, 3, 7, 8, 9 };
List<int> list3 = new List<int>();
var DifferentList1 = list1.Except(list2).Concat(list2.Except(list1));
foreach (var item in DifferentList1)
{
    list3.Add(item);
}
foreach (var item in list3)
{
    Console.WriteLine("Different Item found in lists are{0}",item);
}
Console.ReadLine();