比较两个DataTable中的DataTable单元格



我一直在做一个项目,该项目将使用NLP来定义DataTable值。我已经把那个函数设置好了。然而,我在使用DataTables时遇到了一些问题。

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

例如:

表1

|第1列|

表2

|第1列|第2列|

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

如果>75%匹配

表3

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

如果<75%匹配

表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,我对建议持开放态度。

因此,由于时间限制(以及绝望),我找到了一个不雅的解决方案。

我使用了嵌套的foreach-for循环来遍历这两个DataTables。以下代码:

            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语句消除了找到更好匹配的可能性。

如果有其他建议,我愿意接受。但我希望这能帮助那些和我面临同样问题的人。干杯

最新更新