检查DataTable中是否存在行?

Cur*_*ous 8 c# datatable datarow

我有一个数据表和一行.我想将行导入数据表,只要数据表中不存在该行.

我怎样才能做到这一点?

S22*_*S22 10

如果你使用一个类型DataSet,即在设计时声明,"linq Contains方法"采用一个类型DataRow.默认值IEqualityComparer将比较中的所有值DataRow.(这通常是无用的,因为你应该定义一个键).

DataSet1 ds = new DataSet1();
DataSet1.DataTable1Row row = ds.DataTable1.AddDataTable1Row(bla, bla);
bool exists = ds.DataTable1.Contains(row);
Run Code Online (Sandbox Code Playgroud)


Meh*_*loo 7

如果你想检查所有的cellsa DataRow,你可以试试这个功能:

bool ContainDataRowInDataTable(DataTable T,DataRow R)
{
    foreach (DataRow item in T.Rows)
    {
        if (Enumerable.SequenceEqual(item.ItemArray, R.ItemArray))
            return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)


Ari*_*yak 6

您可以使用LINQ检查数据表中是否存在行.按照此解决方案,将"id"替换为行的主键,通过该主键可以唯一地标识表中的行.

DataRow dr = null; // assign your DR here
DataTable dt = new DataTable(); // assign Datatable instance here.
var k = (from r in dt.Rows.OfType<DataRow>()  where r["id"].ToString() == dr["id"].ToString() select r).FirstOrDefault();
if(k != null)
{  // Row is present }
Run Code Online (Sandbox Code Playgroud)


Vij*_*oje 6

你可以使用Contains如下

if(DataTable.Columns.Contains("RowName"))
{
  //Do some stuffs here
}
Run Code Online (Sandbox Code Playgroud)