kar*_*tal 15 c# list distinct-values set-difference
我有两个字符串列表.如何获取它们之间的不同值列表或从第一个列表中删除第二个列表元素?
List<string> list1 = { "see","you","live"}
List<string> list2 = { "see"}
Run Code Online (Sandbox Code Playgroud)
结果应该是{"you","live"}
.
Jus*_*ner 40
在我看来,你需要Enumerable.Except()
:
var differences = list1.Except(list2);
Run Code Online (Sandbox Code Playgroud)
然后你可以循环分歧:
foreach(var difference in differences)
{
// work with each individual string here.
}
Run Code Online (Sandbox Code Playgroud)
如果您想从第一个列表中获取除第二个列表中的项目之外的项目,请使用
list1.Except(list2)
Run Code Online (Sandbox Code Playgroud)
如果您想获取第一个列表或第二个列表中的项目,而不是两者,您可以使用
list1.Except(list2).Concat(list2.Except(list1))
Run Code Online (Sandbox Code Playgroud)
小智 6
这是我发现独特的好方法......
两个列表中唯一的
var A = new List<int>() { 1,2,3,4 };
var B = new List<int>() { 1, 5, 6, 7 };
var a= A.Except(B).ToList();
// outputs List<int>(2) { 2,3,4 }
var b= B.Except(A).ToList();
// outputs List<int>(2) { 5,6,7 }
var abint= B.Intersect(A).ToList();
// outputs List<int>(2) { 1 }
Run Code Online (Sandbox Code Playgroud)