如何在多个数组中找到相等的值?

时间:2016-09-10 05:19:53

标签: c# arrays

在我的程序中,我可以使用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};

每个数组中的每个数字都是唯一的,但在不同的数组中可能存在匹配的数字。

是否有一种简单的方法可以找到所有匹配的数字?

2 个答案:

答案 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。