c# - 如何比较和存储比较元素形成一维和二维数组 c#?

标签 c# winforms

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

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/

相关文章:

.net - 可扩展的 WinForms 文本框

c# - 异步控制验证

c# - 如何在 C# 窗口应用程序中以编程方式创建按钮?

java - 简单的 android 和 ASP.NET 组合

c# - 圆边面板

c# - 我可以使用数据绑定(bind)格式化事件来有条件地检查复选框吗?

c# - Bloch 的 Effective Java for C# 的等价物

c# - 表达 C# 条件, "if a mouse/keyboard action has not occurred in the last ' n'秒”

c# - 如何使用 C# 禁用 Windows 文本框上的右键单击上下文菜单?

c# - 如何在 RDLC 报告中添加汇总字段?