3

私のコードは配列の比較で混乱しています:

結果は1D配列で、symboltable1は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配列に有効な用語を格納する方法です。有効な用語とは、上記の両方の配列にある用語を意味しますか????

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 に答える