比较两个列表之间的差异
我试图检查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();
对于这个要求之王,您可以使用Except
function。
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.