如何比较和存储 1D 和 2D 数组 c# 中的比较元素

本文关键字:比较 数组 元素 2D 存储 何比较 1D | 更新日期: 2023-09-27 18:35:57

>我在比较数组时感到困惑我的代码是:

结果是一个 1D 数组,符号表1 是一个 2D 数组...这些数组至少包含 100、100 个值

for (int row = 0; row < symboltable1.GetLength(0); row++)
{
    for (int column = 0; column < symboltable1.GetLength(1); column++)
    {
        for (int we = 0; we < result.Length; we++)
          if (result[we].Contains(symboltable1[row, column]))
            listBox1.Items.Add("vliad");
          else
            listBox2.Items.Add("invalid");          
    }
}   

我现在想要的是如何在另一个名为 symboltable2 的 2D 数组中存储有效术语?通过有效术语,我的意思是上述两个数组中的术语????

如何比较和存储 1D 和 2D 数组 c# 中的比较元素

您可以使用

下面的通用函数将 2D 数组展平为IEnumerable,将元素放入哈希集中,并根据该哈希表检查术语。

private static IEnumerable<T> Flatten<T>(T[,] data) {
    var r = data.GetLength(0);
    var c = data.GetLength(1);
    return Enumerable.Range(0, r*c).Select(i => data[i/c, i%c]);
}
var symTableItems = new HashSet<string>(Flatten(symboltable1));
var allValid = result.Where(s => symTableItems.Contains(s)).ToList();