Tak, mam problem, aby usunąćUsuwanie XElements w pętli foreach
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
Problemem jest to, że wywołanie x.Remove() zmienia foreach tak, że jeśli istnieją dwa elementy („X”), a pierwsza jest usunięta, pętla nie dostaje się do drugiego elementu x.
Jak mam to zapętlić? Czy powinno to być przepisane w inny sposób?
I rzeczywiście właśnie zmodyfikował foreach do bycia „foreach (Xelement xw items.Elements (” x „). Rewers())”, a który wydaje się działać dobrze jak przed problemem był foreach przeniósł indeksuj w górę, a funkcja Usuń usuwa wszystko, powodując pominięcie elementów. Odwrócenie zamówienia wydaje się mieć sens. Ale zostawię pytanie otwarte na wypadek, gdyby ktoś miał lepsze rozwiązanie. – CaffGeek
Zrobiłem pętlę for, gdzie musiałem zrobić i-- jeśli rzeczywiście usunięto element, aby zrekompensować indeks. Twoja droga z odwrotnością nie wydaje się złą opcją, ale nie jestem ekspertem od technologii .NET, więc jestem trochę sceptycznie nastawiona do tego, co mówię, lol. – Xaisoft
poprawiony do C# 3.0. Nie ma C# z wersją 3.5 (zobacz ten post dla szczegółów http://stackoverflow.com/questions/247621/what-are-t--correct-version-numbers-for-c) – Vaccano