如何检查 DataTable 是不是包含 DataRow?

Posted

技术标签:

【中文标题】如何检查 DataTable 是不是包含 DataRow?【英文标题】:How to check if DataTable contains DataRow?如何检查 DataTable 是否包含 DataRow? 【发布时间】:2011-12-23 02:54:51 【问题描述】:

我有一个非类型化数据集,其中填充了来自用户输入的数据(无数据库)。没有主键列(到目前为止我的数据不需要主键)!如果我想检查新行用户尝试插入的数据表中是否已经存在,有什么方法可以避免“蛮力”?我应该如何进行检查?

【问题讨论】:

【参考方案1】:

您可以做的是使用 DataView。 Dataview 允许您对 DataView 的数据使用 where 子句。

这样检查。

【讨论】:

我不认为我理解你的答案...我已经填写了数据表,我只想检查即将添加的新行是否与其他行具有完全相同的数据已经存在于数据表中.. 对不起,我误会了。更正了我的答案。【参考方案2】:

要检查任何重复尝试

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】:

您可以为您的 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);

对于此示例,如果您尝试向表中添加一行,其中CustomerIDCompanyName 与具有相同CustomerIDCompanyName.

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

【讨论】:

【参考方案4】:

更简单的方法:

datatable.Columns.Contais("ColumnName")

【讨论】:

以上是关于如何检查 DataTable 是不是包含 DataRow?的主要内容,如果未能解决你的问题,请参考以下文章

“System.Data.DataTable”不包含“tables”的定义,并且找不到可接受类型为“System.Data.DataTable

Flutter:如何检查列表是不是包含通过项?

Spring Data JPA 检查 SET 是不是包含对象

如何检查我导入的数据中的单元格是不是包含 0 html python

检查 VB.net 的 DataTable 中是不是存在值的最简单/最快的方法?

在插入Datable之前,如何检查数据是否为空?