【问题标题】:How to Find and delete DataRow in Datatable asp.net c#?如何在 Datatable asp.net c# 中查找和删除 DataRow?
【发布时间】:2018-02-21 05:15:11
【问题描述】:
string s = "primaryKeyValue";
DataRow foundRow = dataSet1.Tables["AnyTable"].Rows.Find(s);

if (foundRow != null) 
{
    foreach(DataRow r in dataTable)
    {
        if(r == foundRow)
           r.Delete();
    }
}
dataTable.AcceptChanges();

dataTable 和 dataSet1.Tables["AnyTable"] 是不同的表。 dataTable 是 dataSet1.Tables["AnyTable"]

的克隆

此代码不起作用..如果有人知道如何“在数据表中查找和删除行”,请告诉我。提前致谢

【问题讨论】:

  • 我认为您需要在 dataSet1.Tables["AnyTable"].AcceptChanges() 上执行 AcceptChanes 而不是在 dataTable.AcceptChanges() 上执行;
  • foundRow.Delete(); dataSet1.Tables["AnyTable"].AcceptChanges(); 呢?

标签: c# asp.net datatable datarow


【解决方案1】:

您可以使用indexOf 而不是将所有记录返回给delete 数据。您已经知道要删除哪一行。

我认为你直接从Pk中删除了一条记录,这段代码性能更高。

你必须在桌子上设置PK

ds.Tables["AnyTable"].PrimaryKey = new[] { dt.Columns["YourPKcolumn"] };
        DataRow dr =  ds.Tables["AnyTable"].Rows.Find(PrimaryKeyValue); 
        int idx =  dt.Rows.IndexOf(dr);
        dt.Rows.RemoveAt(idx);
        ds.Tables["AnyTable"].AcceptChanges();

【讨论】:

    【解决方案2】:

    请试试这个。

    var datatable = new DataTable(); // take your datatable
    string s = "primaryKeyValue";
    DataRow[] row = datatable.Select("name='" + s + "'");
    for (int i = row.Length - 1; i >= 0; i--)
    {
        datatable.Rows.Remove(row[i]);
    }
    datatable.AcceptChanges();
    

    【讨论】:

      猜你喜欢
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      相关资源
      最近更新 更多