如何检查数组是否包含另一个数组的任何项

rak*_*los 49 c# arrays

给定2个int数组,例如,foobar,检查数组条包含至少一个foo包含的项的最有效方法是什么.应该返回true/false.

我怀疑嵌套,foreach但只是想知道是否有更好的方法?

Oll*_*lli 108

使用LINQ:

array1.Intersect(array2).Any()
Run Code Online (Sandbox Code Playgroud)

注意:使用Any()确保在找到第一个相等对象时停止交叉算法.

  • 请记住,所有array1都是枚举的,因此如果可能的话,您可能希望将较短的数组作为array1 (8认同)
  • 使用Any()可确保在找到第一个相等对象时停止交集算法. (4认同)
  • 我从来没有听说过Intersect方法所以我不得不查看它的作用:http://msdn.microsoft.com/en-us/library/bb460136.aspx它基本上为你提供了两个中找到的项目列表比较数组.使用any运算符,您可以知道在这种情况下array1和array2是否具有任何相同的字符串. (4认同)

Ale*_*ini 9

C#3:

bool result = bar.Any(el => foo.Contains(el));
Run Code Online (Sandbox Code Playgroud)

C#4并行执行:

bool result = bar.AsParallel().Any(el => foo.AsParallel().Contains(el));
Run Code Online (Sandbox Code Playgroud)