Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两个数据表中的数据表单元格_C#_Datagridview_Datatable_Compare_Cell - Fatal编程技术网

C# 比较两个数据表中的数据表单元格

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

我一直在从事一个使用NLP定义DataTable值的项目。我已经把那个函数设置好了。然而,我在使用数据表时遇到了一些问题

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

e、 g:

表1

|第1栏|

表2

|第1栏|第2栏|

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

如果匹配率>75%

表3

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


如果那么,由于时间限制(和绝望),我想出了一个不雅观的解决方案

我使用了一个嵌套的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!", "");
                }
            }