3

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

结果是一维数组,而 symboltable1 是二维数组...这些数组至少包含 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 的二维数组中?通过有效术语,我的意思是上述两个数组中的术语????

4

1 回答 1

3

您可以使用下面的通用函数将 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();
于 2012-06-01T14:57:46.620 回答