Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个列表的差异_C# - Fatal编程技术网

C# 两个列表的差异

C# 两个列表的差异,c#,C#,我有两份清单: List<string> list1 = new List<string>(); List<string> list2 = new List<string>(); list1 = {"a", "b", "b", "c", "b"}; list2 = {"b", "d", "c"}; 我不能在这里使用“Except”,因为 list1.Except(list2).ToList(); 删除列表1中字符串“b”的所有重复项。我需要第

我有两份清单:

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

list1 = {"a", "b", "b", "c", "b"};
list2 = {"b", "d", "c"};
我不能在这里使用“Except”,因为

list1.Except(list2).ToList();
删除列表1中字符串“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); }
List list3=list1;
foreach(list2中的字符串d){list3.Remove(d);}
List list4=list2;
foreach(列表1中的字符串d){list4.Remove(d);}
void Main()
{
List list1=新列表();
List list2=新列表();
清单1.添加(“a”);
清单1.添加(“b”);
清单1.添加(“b”);
清单1.添加(“c”);
清单1.添加(“b”);
清单2.添加(“b”);
清单2.添加(“d”);
清单2.添加(“c”);
var resultList=temp(列表2,列表1);
}
列表温度(列表x、列表y)
{
foreach(y中的var值)
{
x、 Remove((x.Where(z=>z==value)。SelectMany(g=>g.Take(1)。DefaultIfEmpty(g.First())。FirstOrDefault())。ToString());
}
返回x;
}

操作员超载
要救援,应该移除哪个
“b”
?第一,第二,第三?或者结果顺序无关紧要?删除哪个“b”无关紧要,列表中元素的顺序完全不重要
list1-list2
应该是
“a”、“b”、“b”
,根据您的规格(您删除了一个
b
和一个
c
),不是吗?算法是正确的,但是您可能想要
List list3=新列表(list1),否则元素将从原始列表中删除,使用其他变量没有意义(您可以直接从
list1
中删除)
            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;
}