2012-06-01 39 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?使用列表框?它不工作 –