两个列表的区别

本文关键字:列表 区别 两个 | 更新日期: 2024-10-31 22:41:29

我有两个列表:

List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
list1 = {"a", "b", "b", "c", "b"};
list2 = {"b", "d", "c"};

我想通过以下方式获得差异:

list3 = list1 - list2 = {"a", "b", "b"};
list4 = list2 - list1 = {"d"};

我不能在这里使用"除非",因为

list1.Except(list2).ToList();

删除 list1 中字符串"b"的所有精度。我需要第二个列表中字符串的每次出现只删除第一个列表中该字符串的一次出现。

我感谢您的帮助。

两个列表的区别

试试这个

            List<string> list3 = list1;
            foreach (string d in list2) { list3.Remove(d); }
            List<string> list4 = list2;
            foreach (string d in list1) { list4.Remove(d); }
void Main()
{
List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
list1.Add("a");
list1.Add("b");
list1.Add("b");
list1.Add("c");
list1.Add("b");
list2.Add("b");
list2.Add("d");
list2.Add("c");
var resultList= temp(list2,list1);
}
List<string> temp(List<string> x,List<string> y)
{
foreach(var value in y)
{
    x.Remove((x.Where(z=>z == value).SelectMany(g=>g.Take(1).DefaultIfEmpty(g.First())).FirstOrDefault()).ToString());
}
return x;
}