比较两个列表之间的差异

我试图检查c#两个List之间的区别。

例:

 List FirstList = new List(); List SecondList = new List(); 

FirstList填充以下值:

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

SecondList填充以下值:

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

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

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

因此,如果我要创建一个新的ThirdList ,它将只用“COM3”填充,因为其他值是重复的。

我怎样才能创建这样的支票?

尝试使用除了 LINQ扩展方法,该方法仅从第一个列表中获取第二个中不存在的项目。 示例如下:

 List 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 ThirdList = inSecondOnly.ToList(); 

对于这个要求之王,您可以使用Exceptfunction。

 List newlist = List1.Except(List2).ToList(); 

或者你可以这样做,所以下面的一个创建新的列表三,其中包含list1和list2中不常见的项目

 var common = List1.Intersect(List2); var list3 = List1.Except(common ).ToList(); list3.AddRange(List2.Except(common ).ToList()); 

当list1和list2有不同的项目时,上面的帮助是完整的

 List list1= new List(); List list2 = new List(); 

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.