我在比较数组时感到困惑 我的代码是:
result 是一维数组,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 的二维数组中? 我所说的有效术语是指上述两个数组中的术语????
最佳答案
您可以使用下面的通用函数将二维数组展平为 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();
关于c# - 如何比较和存储比较元素形成一维和二维数组 c#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10852331/