2012-06-01 43 views
3

我在比較陣列 我的代碼是困惑:如何比較和存儲比較元素形成一維和二維數組c#?

結果是一維數組和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的另一個二維數組中? 有效條款,我的意思是在上述兩個陣列中的術語?

回答

3

您可以使用下面的通用函數將二維數組平鋪到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(); 
+0

我有一個代碼containg成千上萬的相互連接的線我現在可以改變一下..... wot我問的是,如何存儲有效值? –

+0

@MomoPomo將symTableItems展平後,獲取所有有效值變成一個簡單的LINQ查詢。看看編輯。 – dasblinkenlight

+0

這樣,「allvalid」是否包含這些值?我現在如何在表格上顯示thm?使用列表框?它不工作 –