【问题标题】:Remove a DataRow from a DataTable in c#从 C# 中的 DataTable 中删除 DataRow
【发布时间】:2020-03-28 06:08:31
【问题描述】:

我有一个名为EventDBDataSet 的数据集,其中有一个名为Contacts 的数据表。我正在尝试从 DataTable 中删除一行,但它不起作用,也不会引发任何错误。我尝试了一些有关此的 Stack Overflow 解决方案,但没有一个对我有用。按照从 DataTable 中删除行的代码

public void deleteContact(Int16 contactId)
{
    EventDBDataSet eventDBDataSet = new EventDBDataSet();
    EventDBDataSetTableAdapters.ContactsTableAdapter contactsTableAdapter =
        new EventDBDataSetTableAdapters.ContactsTableAdapter();

    contactsTableAdapter.Fill(eventDBDataSet.Contacts);

    EventDBDataSet.ContactsRow contactsRow = eventDBDataSet.Contacts.FindBycontactId(contactId);

    eventDBDataSet.Contacts.RemoveContactsRow(contactsRow);

    eventDBDataSet.Contacts.AcceptChanges();

    contactsTableAdapter.Update(eventDBDataSet.Contacts);

}

我在这里缺少什么?

【问题讨论】:

标签: c# datatable dataset


【解决方案1】:

如果您从集合中删除项目,则该集合已更改,您无法继续枚举它。

改为使用 For 循环,例如:

public void RemoveRow()
    {
        DataTable dt = new DataTable();

        foreach (var row in dt.Select())
        {
            if (row["ID"].ToString().Equals("NAME"))
            {
                dt.Rows.Remove(row);
                dt.AcceptChanges();
            }
        }
    }

【讨论】:

  • 我没有收到 ant 错误或任何输出。执行删除后数据表未更新。
  • 更新了对我有用的答案,试试看。
  • 你确定它有效?? EventDBDataSet.ContactsRow 没有名为 Select() 的方法
  • 我保证它对我有用,Select() 返回一个包含所有 DataRow 对象的数组。请使用我添加的编辑,这在 VS 2019 中可以正常工作。
  • 您是否检查过 EventDBDataSet.ContactsRow 是 DataTable 类型的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2020-02-27
  • 1970-01-01
相关资源
最近更新 更多