比较两个数据行

本文关键字:两个 数据 比较 | 更新日期: 2023-09-27 18:21:14

我有一个数据表,里面有多行。我还有一行,我想检查这一行是否与数据表中现有的行重复。所以我试着说:

DataTable dataTable = GetTable();
if (dataTable.Rows.Count > 1)
{
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        var dataRow = dataTable.Rows[i];
        if (dt.Rows.Contains(dataRow) && dt.Rows.Count != 0)  // Giving error
            continue;
        dt.ImportRow(dataRow);
        return dataRow;
    }
}

在这里,我的dataTable也可以是第一次空/空。

但其给出的错误为:

表没有主键。

有人能帮我吗。如果需要额外的代码,只需注释即可。

比较两个数据行

您不能在DataTable对象上添加PK吗?

我认为代码应该是这样的:

dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns["Id"] };
DataTable dataTable = GetTable();
if (dataTable.Rows.Count > 1)
{
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        var dataRow = dataTable.Rows[i];
        if (dt.Rows.Contains(dataRow) && dt.Rows.Count != 0)  // Giving error
            continue;
        dt.ImportRow(dataRow);
        return dataRow;
    }
}

我假设dt变量应该是dataTable变量,如果您收到一个错误,告诉您表没有主键,那可能是因为您使用了错误的变量,并且确实没有主键或表与您尝试使用的变量关联。

所以我认为代码应该是这样的,而不是

DataTable dataTable = GetTable();
if (dataTable.Rows.Count > 1)
{
    for (int i = 0; i < dataTable.Rows.Count; i++)
    {
        var dataRow = dataTable.Rows[i];
        if (dataTable.Rows.Contains(dataRow) && dataTable.Rows.Count != 0)  // Giving error
            continue;
        dataTable.ImportRow(dataRow);
        return dataRow;
    }
}