【发布时间】:2014-05-02 17:00:17
【问题描述】:
我正在尝试从DataTable 中删除不需要的行。基本上,可能有几行itemID 是相同的。我想找到"failEmail" = "fail" 列所在的行,并使用这些行的itemID,从电子邮件DataTable 中删除所有具有相同itemID 的行。
这是我尝试过的:
System.Diagnostics.Debug.Print(emails.Rows.Count.ToString() + " emails!");
// create a list of the email IDs for records that will be deleted
List<DataRow> rows2Delete = new List<DataRow>();
foreach (DataRow dr in emails.Rows)
{
if (dr["failEmail"].ToString().ToLower() == "fail")
{
rows2Delete.Add(dr);
}
}
foreach (DataRow row in rows2Delete)
{
DataRow[] drRowsToCheck =emails.Select("itemID ='" + row["itemID"].ToString() +"'");
foreach (DataRow drCheck in drRowsToCheck)
{
emails.Rows.RemovedDrCheck);
emails.AcceptChanges();
}
}
这是我在第二遍时收到的错误消息:
此行已从表中删除,并且没有任何数据。 BeginEdit() 将允许在该行中创建新数据
我怎样才能做我需要做的而不抛出这样的错误?有没有更好的方法比如使用LiNQ 查询?
【问题讨论】:
-
简单地调用 delete 方法会起作用吗?比如:
emails.rows[0].delete();? -
另外,如果这是您的代码的复制/粘贴,那么您在这一行中有一个错误的括号:
emails.Rows.RemovedDrCheck);要么删除它,要么添加左括号,使其显示为emails.Rows.RemovedDrCheck(); -
@armadadrive 问题是最初只有几行有
fail,我需要获取这些行的itemID,然后选择所有这些...