我有一个数据表,里面有多行。我还有一行,我想检查这一行是否与数据表中现有行重复。所以我尝试了:
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
也可能是第一次为空/空。
但它的错误是:
表没有主键。
任何人都可以帮助我。如果需要其他代码,请发表评论。
答案 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;
}
}