当前位置:  开发笔记 > 编程语言 > 正文

数据表+使用循环删除c#中的一行

如何解决《数据表+使用循环删除c#中的一行》经验,为你挑选了2个好方法。

我有一个数据表,我想在这里删除一行是我的代码它给我一个例外

foreach (DataRow row in dt1.Rows)
{
    if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
    {
        row.Delete();
        dt1.AcceptChanges();
    }
}

我甚至尝试在if语句之外,并且在forloop之外仍然会抛出错误任何想法如何实现此任务这是我获得的异常:

Collection was modified; enumeration operation might not execute.

最终工作守则:

foreach (DataRow row in dt1.Select())
{
    if ((row["Name"] == "Select a Lookbook") ||    (row["Name"] == "Create a new Lookbook"))
    {
        row.Delete();                                       
    }

}

Pierre-Alain.. 18

而不是使用dt1.Rows,使用dt1.Select()

这里的目标是不使用集合本身,而是行的数组,它是不是Rows集合



1> Pierre-Alain..:

而不是使用dt1.Rows,使用dt1.Select()

这里的目标是不使用集合本身,而是行的数组,它是不是Rows集合



2> Jon Skeet..:

在迭代时创建要删除的行列表DataTable.Rows,然后单独删除它们.

非LINQ解决方案:

List rowsToDelete = new List();
foreach (DataRow row in dt1.Rows)
{
    if ((row["Name"] == "Select a Lookbook") || 
        (row["Name"] == "Create a new Lookbook"))
    {
        rowsToDelete.Add(row);
    }
}
foreach (DataRow row in rowsToDelete)
{
    row.Delete();
}
dt1.AcceptChanges();

LINQ解决方案:

List rowsToDelete = dt1.Rows.AsEnumerable()
    .Where(row => (row["Name"] == "Select a Lookbook") || 
                  (row["Name"] == "Create a new Lookbook"))
    .Tolist();
foreach (DataRow row in rowsToDelete)
{
    row.Delete();
}
dt1.AcceptChanges();

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有