C#List <string>"包含"问题

Gan*_*sha 2 .net generics list

有没有一种简单的方法,通过LINQ或Generics,来查明一个List中的元素是否都在另一个List中可用.

我目前正在使用Intersect来检查这个.

例如

List<string> list1; //{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }

List<string> list2; //{ 1, 3, 9 }

list1.Contains(list2) == true
Run Code Online (Sandbox Code Playgroud)

提前致谢

Bri*_*sen 8

Intersect方法将为您提供两个列表中的所有元素.

例如

var inboth = list1.Intersect(list2);
Run Code Online (Sandbox Code Playgroud)

或者如果你只是想知道两者之间是否有任何共享元素

if(list1.Intersect(list2).Any()) ...
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`Except`这样的`if(!list2.Except(list1).Any())...` (2认同)

mqp*_*mqp 6

Intersect这是一个很好的方法.唯一合理的方法就是强制它:

list2.All(x => list1.Contains(x));
Run Code Online (Sandbox Code Playgroud)

请注意,无论是技术,将工作,如果,例如,list2(1 2 2)list1(1 2 3)和你想要的返回false.如果你需要检查一下,我会对两个列表进行排序并将它们放在一起.