如何在 c# 中比较两个数组并计算相等的项目



我有两个数组:{1, 2, 3, 4, 5} 和 {1, 3, 3, 6, 5}。

要找出许多相似的项目(在同一位置),我这样做:

int[] a = new int[5] {1, 2, 3, 4, 5};
int[] b = new int[5] {1, 3, 3, 6, 5};
int count = 0;
for(int i = 0; i < 5; i++)
{
    if(a[i] == b[i])
      count++;
}
Console.Write(count);

这将给出结果 3。

有没有更好(更快)的方法可以做到这一点?

Linq Zip() 是一种方式

int equalElements = a.Zip(b, (i, j) => i == j).Count(eq => eq);

基于Zip解决方案构建,但旨在提高可读性,有:

int[] a = new int[5] {1, 2, 3, 4, 5};
int[] b = new int[5] {1, 3, 3, 6, 5};
var count = a.Zip(b, (x, y) => (X : x, Y : y))
            .Where(t => t.X == t.Y)
            .Count();

这是通过将两个数组组合成一个元组序列(X, Y)然后使用 Where 仅选择XY相等的元组来工作。

您需要确保具有对System.ValueTuple程序集的引用才能使其正常工作。

相关内容

  • 没有找到相关文章

最新更新