比较两个list之间的差异

本文关键字:string 之间 list 两个 比较 | 更新日期: 2023-09-27 18:05:46

我正试图检查c#中两个List<string>之间的差异。

的例子:

List<string> FirstList = new List<string>();
List<string> SecondList = new List<string>();

FirstList用以下值填充:

FirstList.Add("COM1");
FirstList.Add("COM2");

SecondList填入以下值:

SecondList.Add("COM1");
SecondList.Add("COM2");
SecondList.Add("COM3");

现在我想检查SecondList中的一些值是否等于FirstList中的值。

如果在两个列表中都有相同的值,如:COM1和COM2,则从列表中过滤它们,并将其余值添加到另一个列表中。

所以如果我要创建一个新的ThirdList,它只会被"COM3"填充,因为其他值是重复的。

我如何创建这样的支票?

比较两个list<string>之间的差异

尝试使用Except LINQ扩展方法,它只从第一个列表中获取不存在于第二个列表中的项。示例如下:

List<string> ThirdList =  SecondList.Except(FirstList).ToList();

您可以使用以下代码打印结果:

Console.WriteLine(string.Join(Environment.NewLine, ThirdList));

Debug.WriteLine(string.Join(Environment.NewLine, ThirdList));

注意:不要忘记包括:using System.Diagnostics;

打印:

COM3

您可以使用Enumerable.Intersect:

var inBoth = FirstList.Intersect(SecondList);

或检测仅在两个列表中的一个中的字符串,Enumerable.Except:

var inFirstOnly = FirstList.Except(SecondList);
var inSecondOnly = SecondList.Except(FirstList);

获取ThirdList:

List<string> ThirdList = inSecondOnly.ToList();

对于这个需求,您可以使用Except函数。

List<string> newlist =  List1.Except(List2).ToList();

或者你也可以这样做,所以下面这个创建新的列表3,其中包含在list1和list2

中不常见的项目
var common = List1.Intersect(List2);
var list3 = List1.Except(common ).ToList();
list3.AddRange(List2.Except(common ).ToList());
当列表1和列表2有不同的项目时,如 ,上面的

是有用的。

List<string> list1= new List<string>();
List<string> list2 = new List<string>();

FirstList由以下值填充:

list1.Add("COM1");
list1.Add("COM2");
list1.Add("COM4");

SecondList由以下值填充:

list2 .Add("COM1");
list2 .Add("COM2");
list2 .Add("COM3");
list3 contains COM4 and COM3.