C# 比较两个数据表中的数据表单元格
我一直在从事一个使用NLP定义DataTable值的项目。我已经把那个函数设置好了。然而,我在使用数据表时遇到了一些问题 我将有两个不同的数据表,都是不同的格式 e、 g: 表1 |第1栏| 表2 |第1栏|第2栏| 在DataTable2中,第2列是与第1列对应的值。 我打算比较两个DataTables的第1列的单元格内容,并通过NLP运行它。如果它们有一定的匹配百分比,我会将它们写入另一个数据表。如果他们不匹配,我就把它留空。 例如: 如果匹配率>75% 表3 |DT1列1 | DT2列1 | DT2列2|C# 比较两个数据表中的数据表单元格,c#,datagridview,datatable,compare,cell,C#,Datagridview,Datatable,Compare,Cell,我一直在从事一个使用NLP定义DataTable值的项目。我已经把那个函数设置好了。然而,我在使用数据表时遇到了一些问题 我将有两个不同的数据表,都是不同的格式 e、 g: 表1 |第1栏| 表2 |第1栏|第2栏| 在DataTable2中,第2列是与第1列对应的值。 我打算比较两个DataTables的第1列的单元格内容,并通过NLP运行它。如果它们有一定的匹配百分比,我会将它们写入另一个数据表。如果他们不匹配,我就把它留空。 例如: 如果匹配率>75% 表3 |DT1列1 | DT2列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!", "");
}
}
foreach(dt1.Rows中的数据行dRow)
{
a=dRow[0].ToString();
for(int i=0;i=90.00)
{
c=dt2.Rows[i][1].ToString();
匹配=真;
打破
}
其他的
{
匹配=假;
继续;
}
}
如果(匹配)
{
添加(a、b、c);
}
其他的
{
添加(a,“未找到接近的匹配项!”,“”);
}
}
但是,我非常确定,当数据表达到一定大小时,操作将非常消耗内存。此外,if语句消除了找到更好匹配的可能性
如果有其他建议,我愿意接受。但我希望这能帮助那些和我面临同样问题的人。干杯 是否需要使用数据表?为什么不创建一个表示表1和表2的实体的类?@jfs guess DataTables不是必需的。但我会处理CSV文件,所以。。。这会改变事情吗?我不这么认为。使用实体比使用数据表更容易进行计算。另一个优点是可以显式地将约束放在类上。
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!", "");
}
}