比较两个数据行

时间:2012-01-24 20:16:56

标签: c# datatable datarow

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

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也可能是第一次为空/空。

但它的错误是:

  

表没有主键。

任何人都可以帮助我。如果需要其他代码,请发表评论。

2 个答案:

答案 0 :(得分:1)

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

我认为代码会是这样的:

dataTable.PrimaryKey = new DataColumn[] { dataTable.Columns["Id"] };

答案 1 :(得分:0)

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;
    }
}