比较两个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"填充,因为其他值是重复的。
我如何创建这样的支票?
尝试使用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.