我有下面的带有复合主键的DataTable。第四次,通过for循环,复合键将被违反。我如何说,如果此行将导致密钥被违反,不要将其添加到DataRowCollection中?我只希望DataTable中基于这三个键的行是唯一的。谢谢
DataTable DTRejects = new DataTable("RejectedInvoicesDT");
DTRejects.PrimaryKey = new DataColumn[]
{
DTRejects.Columns.Add("OperatorName"),
DTRejects.Columns.Add("ProcessType"),
DTRejects.Columns.Add("RejectedReason")
};
for (int i = 0; i < RowIndex; i++)
{
if (arrStatus[i].ToString() == "Rejected")
{
DataRow DRRejects = DTRejects.NewRow();
DRRejects[0] = arrOperatorName[i].ToString();
DRRejects[1] = arrProcessType[i].ToString();
DRRejects[2] = arrRejectedReason[i].ToString();
DTRejects.Rows.Add(DRRejects);
}
}发布于 2015-03-27 18:35:28
您正在使用DataTable的泛型类型,但如果创建强类型化数据集,也可以使用设计器创建强类型化DataTables。
在强类型datatable上,可以使用设计器定义主键。可以启用或禁用约束检查。您可以很容易地使用find方法根据主键值的值在表中查找。
因此,如果密钥已经存在,将很容易检测到。当然,使用linq也很容易,因为user2864740在他的回答中表示,但我在linq存在之前就已经使用了强类型化数据集,而且它们也能工作,结果是非常可读的代码。
https://stackoverflow.com/questions/29307562
复制相似问题