【问题标题】:Comparing DataTable cells from two DataTables比较来自两个数据表的数据表单元格
【发布时间】:2012-08-29 04:31:44
【问题描述】:

我一直在从事一个将使用 NLP 来定义 DataTable 值的项目。我已经搞定了这个功能。但是,我在使用 DataTables 时遇到了一些问题。

我将有两个不同的数据表,两种格式都不同

例如:

表 1

|第 1 列|

表2

|第 1 列|第 2 列|

在 DataTable2 中,第 2 列是第 1 列的对应值。 我打算比较两个 DataTables 的第 1 列的单元格内容,并通过我的 NLP 运行它。如果它们有一定的匹配百分比,我会将它们写入另一个 DataTable。如果他们不匹配,我就把它留空。 比如:

如果 >75% 匹配

表3

|DT1 列 1| DT2 第 1 列 | DT2 Col 2|

如果

表3

|DT1 列 1| " " | " "

我的目标是通过编程实现吗?如果它有助于更​​好地解释它,我会记住伪代码。

foreach(DataRow in Table1)
   foreach(DataRow in Table2)
      if(comparison score >=75.00)
            Write to table3
      else
            Write to table3 with blanks

对于这个问题的任何帮助,我将不胜感激。不过,我仍然会做自己的研究,如果我有任何突破,我会回帖。

编辑: 我刚刚意识到两个数据表中的行可能不一定对应,所以我必须对所有单元格进行比较。这可能吗?

虽然它不一定要使用 DataTables,但我愿意接受建议。

【问题讨论】:

  • 是否需要使用 DataTables?为什么不创建一个代表表 1 和 2 的实体的类?
  • @jfs 猜测 DataTables 不是强制性的。但我将使用 CSV 文件,所以……这会改变吗?
  • 我不这么认为。使用实体进行计算比使用数据表更容易。另一个优点是您可以显式地将约束放在类上。

标签: c# datagridview datatable compare cell


【解决方案1】:

所以由于时间限制(和绝望),我想出了一个不优雅的解决方案。

我使用了一个嵌套的 foreach - for 循环来遍历两个数据表。代码如下:

            foreach (DataRow dRow in dt1.Rows)
            {
                a = dRow[0].ToString();
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    b = dt2.Rows[i][0].ToString();
                    if (hcontroller.GetScore(a, b) >= 90.00)
                    {
                        c = dt2.Rows[i][1].ToString();
                        match = true;
                        break;
                    }
                    else
                    {
                        match = false;
                        continue;
                    }

                }
                if (match)
                {
                    dt.Rows.Add(a, b, c);
                }
                else
                {
                    dt.Rows.Add(a, "No close matches found!", "");
                }
            }

但是,我非常确定当 DataTables 达到一定大小时,该操作将非常消耗内存。此外,if 语句消除了找到更好匹配的可能性。

如果有其他建议,我愿意接受。但我希望这可以帮助任何遇到我面临的同样问题的人。干杯!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多