相关疑难解决方法(0)

在'foreach'循环中修改列表的最佳方法是什么?

C#/ .NET 4.0中的一个新功能是,您可以在foreach不获取异常的情况下更改您的枚举.请参阅Paul Jackson的博客文章"并发的有趣副作用:在枚举时从集合中删除项目"以获取有关此更改的信息.

执行以下操作的最佳方法是什么?

foreach(var item in Enumerable)
{
    foreach(var item2 in item.Enumerable)
    {
        item.Add(new item2)
    }
}
Run Code Online (Sandbox Code Playgroud)

通常我使用IList一个缓存/缓冲区直到结束foreach,但是有更好的方法吗?

.net c# enumeration list enumerable

68
推荐指数
5
解决办法
10万
查看次数

C#openxml删除段落

我试图使用OpenXML从.docx文件中删除段落(我使用一些占位符文本从docx模板文件生成),但每当我删除段落时,它会破坏我用来迭代的foreach循环.

MainDocumentPart mainpart = doc.MainDocumentPart;
IEnumerable<OpenXmlElement> elems = mainPart.Document.Body.Descendants();

foreach(OpenXmlElement elem in elems){
    if(elem is Text && elem.InnerText == "##MY_PLACE_HOLDER##")
    {
        Run run = (Run)elem.Parent;
        Paragraph p = (Paragraph)run.Parent;
        p.RemoveAllChildren();
        p.Remove();
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作,删除我的占位符和它所在的段落,但foreach循环停止迭代.在foreach循环中我需要做更多的事情.

这是正常使用的OpenXML和删除在C#中的段落方式为什么我的foreach循环停止或如何使它不会停止?谢谢.

c# openxml

11
推荐指数
2
解决办法
9313
查看次数

如何正确地从列表中删除项目

可能重复:
迭代时收集异常并从该集合中删除项目
如何在迭代时从泛型列表中删除元素?
从列表中删除匹配项的更好方法

// tmpClientList is List<Client> type

if (txtboxClientName.Text != "")
    foreach (Client cli in tmpClientList)
        if (cli.Name != txtboxClientName.Text)
            tmpClientList.Remove(cli);
Run Code Online (Sandbox Code Playgroud)

错误:"集合已被修改;枚举操作可能无法执行."

如何以一种简单的方式从列表中删除项目,而不保存这些项目在另一个列表或数组中的索引,并在代码中的其他位置删除它们.尝试了RemoveAt(索引)但它完全相同的情况,修改循环运行时.

c#

6
推荐指数
3
解决办法
2704
查看次数

标签 统计

c# ×3

.net ×1

enumerable ×1

enumeration ×1

list ×1

openxml ×1