Compare the difference between two list<string>

独自空忆成欢 提交于 2019-11-27 17:36:48

问题


I'am trying to check the difference between two List<string> in c#.

Example:

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

The FirstList is filled with the following values:

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

The SecondList is filled with the following values:

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

Now I want to check if some values in the SecondList are equal to values in the FirstList.

If there are equal values like: COM1 and COM2, that are in both lists, then filter them from the list, and add the remaining values to another list.

So if I would create a new ThirdList, it will be filled with "COM3" only, because the other values are duplicates.

How can I create such a check?


回答1:


Try to use Except LINQ extension method, which takes items only from the first list, that are not present in the second. Example is given below:

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

You can print the result using the following code:

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

Or

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

Note: Don't forget to include: using System.Diagnostics;

prints:

COM3



回答2:


You can use Enumerable.Intersect:

var inBoth = FirstList.Intersect(SecondList);

or to detect strings which are only in one of both lists, Enumerable.Except:

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

To get your ThirdList:

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



回答3:


Than for this king of reuqirement you can can make use of Except function.

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

or you can do this , so the below one create new list three which contains items that are not common in list1 and list2

var common = List1.Intersect(List2);

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

the above one is help full when list1 and list2 has differenct item like

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

The FirstList is filled with the following values:

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

The SecondList is filled with the following values:

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

by using above code list3 contains COM4 and COM3.



来源:https://stackoverflow.com/questions/15612162/compare-the-difference-between-two-liststring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!