如何检查DataTable是否包含DataRow?

时间:2011-11-06 16:11:01

标签: c# datatable dataset

我有一个非类型数据集,其中包含来自用户输入的数据(无数据库)。没有主键列(到目前为止,我的数据不需要主键)!如果我想检查新行用户是否尝试插入已存在于我的DataTable中,有没有办法避免“暴力”?我该如何进行检查?

4 个答案:

答案 0 :(得分:2)

您可以为DataTable手动创建唯一的constraints

DataTable custTable = custDS.Tables["Customers"];
UniqueConstraint custUnique = new UniqueConstraint(new DataColumn[] 
    {custTable.Columns["CustomerID"], 
    custTable.Columns["CompanyName"]});
custDS.Tables["Customers"].Constraints.Add(custUnique);

对于此示例,如果您尝试在ConstraintExceptionCustomerID与另一行重复的表中添加行,则会出现异常(类型为CompanyName)相同的CustomerIDCompanyName

我会让DataTable在内部检查这些东西 - 没有必要重新发明轮子。至于 它是如何做到的(无论它是否有效),都必须为你练习。

答案 1 :(得分:0)

您可以使用DataView。 Dataview允许您使用带有DataView数据的where子句。

检查一下。

答案 2 :(得分:0)

要检查是否有重复项,请尝试

if (table.Rows.Contain(PriKeyTypeValue)) /*See if a Primary Key Value is in 
the table already */
    continue;
else
    table.Row.Add(value1, value2, value3);

如果您希望能够插入重复的行,但又不想抛出异常,则将主键设置为唯一的自增量int,然后您可以根据需要插入尽可能多的重复行,而无需检查查看表中是否包含该值。您可以设置主键值,如下所示....

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

答案 3 :(得分:0)

更容易的方式:

datatable.Columns.Contais("ColumnName")
相关问题
最新问题