如何检查DataTable是否包含DataRow?
问题描述:
我有一个非用户输入(无数据库)数据填充的非类型数据集。没有主键列(到目前为止,我的数据不需要主键)!有没有什么办法可以避免“蛮力”,如果我想检查新的行用户是否试图插入已存在于我的DataTable?我应该如何执行该检查?如何检查DataTable是否包含DataRow?
答
您可以手动创建独特constraints你的DataTable:
DataTable custTable = custDS.Tables["Customers"];
UniqueConstraint custUnique = new UniqueConstraint(new DataColumn[]
{custTable.Columns["CustomerID"],
custTable.Columns["CompanyName"]});
custDS.Tables["Customers"].Constraints.Add(custUnique);
在这个例子中,你会得到(ConstraintException
类型的)一个例外,如果你尝试将行添加到其中CustomerID
和CompanyName
是另一行的重复使用相同的CustomerID
和CompanyName
表。
我只想让DataTable
在内部为您检查这些事情 - 没有意义重新发明轮子。至于如何它(它是否有效),将不得不为你做一个练习。
答
来检查任何重复尝试
if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in
the table already */
continue;
else
table.Row.Add(value1, value2, value3);
如果您希望能够插入重复行,但不希望有甩建立主键作为一个独特的自我递增的整数,那么一个异常您可以根据感觉,而无需检查,看看表包含value.you可以设定像下面的主键值中插入多个副本....
DataTable table = new DataTable();
table.Columns.Add("Column", typeof(int));
DataColumn column = table.Columns["Column"];
column.Unique = true;
column.AutoIncrement = true;
column.AutoIncrementStep = 1; //change these to whatever works for you
column.AutoIncrementSeed = 1;
table.PrimaryKey = new DataColumn[] { column };
答
很多,很多简单的方法:
datatable.Columns.Contais("ColumnName")
就是这样! TNX! – guest86