gpt4 book ai didi

.net - 在 foreach 循环中删除 XElement

转载 作者:行者123 更新时间:2023-12-02 08:22:57 24 4
gpt4 key购买 nike

所以,我有一个错误要删除

foreach (XElement x in items.Elements("x")) 
{
XElement result = webservice.method(x);

if (/*condition based on values in result*/)
{
x.Remove();
}
}

问题是调用 x.Remove() 会改变 foreach,如果有两个 Elements("x"),并且第一个被删除,则循环不会到达第二个 x 元素。

那么我应该如何循环这个?或者这应该以另一种方式重写?

最佳答案

我怀疑 Linq 可能可以帮助您,如下所示。

using System.Linq;

void foo()
{
items.Elements("x")
.Where(x => condition(webservice.method(x)))
.Remove();
}

如果这不起作用(即内部枚举器仍然无效),请制作所选元素的浅拷贝并按如下方式删除它们。
using System.Linq;

void foo()
{
List xElements = items.Elements("x")
.Where(x => condition(webservice.method(x)))
.ToList();

for (int i = xElements.Count - 1; i > -1; i--)
{
xElements[i].Remove();
}
}

关于.net - 在 foreach 循环中删除 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com