在我的程序中,我可以使用2个或更多阵列。看起来像这样:
int[] aa = new int[5] {23, 63, 99, 26, 13};
int[] bb = new int[3] {99, 13, 23};
int[] cc = new int[7] {5, 23, 72, 88, 99, 100, 65};
每个数组中的每个数字都是唯一的,但在不同的数组中可能存在匹配的数字。
是否有一种简单的方法可以找到所有匹配的数字?
答案 0 :(得分:4)
您是否正在尝试找到多个序列的交集?以下代码段显示了如何使用LINQ' Intersect
方法执行此操作:
// using System.Linq;
var array1 = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var array2 = new[] { 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var array3 = new[] { 3, 4, 5, 6, 7, 8, 9, 10, 11 };
var array4 = new[] { 4, 5, 6, 7, 8, 9, 10, 11, 12 };
var result = array1.Intersect(array2).Intersect(array3).Intersect(array4);
Console.WriteLine(string.Join(", ", result));
结果将是:4, 5, 6, 7, 8, 9
答案 1 :(得分:0)
您可以使用LINQ。如果你只是需要知道,如果有重复:
array1.Any(value1 => array2.Any(value2 => value2.Equals(value3)) &&array3.Any(....))
如果您需要重复的值本身,请将第一个Any behind数组1替换为Where。