Vì vậy, tôi có một lỗi để loại bỏXElements Loại bỏ trong một vòng lặp foreach
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
Vấn đề là gọi x.Remove() làm thay đổi foreach như vậy mà nếu có hai yếu tố ("x"), và cái đầu tiên bị loại bỏ, vòng lặp không đến được phần tử x thứ hai.
Vậy làm cách nào để tôi lặp lại điều này? Hay điều này nên được viết lại theo cách khác?
Tôi thực sự vừa sửa đổi foreach là "foreach (XElement x trong items.Elements (" x "). Đảo ngược())" và điều đó dường như làm việc tốt như các vấn đề trước khi là foreach chuyển lập chỉ mục và Xóa đã chuyển mọi thứ xuống, khiến các mục bị bỏ qua. Đảo ngược thứ tự có vẻ hợp lý. Nhưng, tôi sẽ để câu hỏi mở ra trong trường hợp ai đó có một giải pháp tốt hơn. – CaffGeek
Tôi đã làm một vòng lặp cho nơi mà tôi đã phải làm một i-- nếu nó thực sự loại bỏ một mục để bù đắp cho chỉ mục. Cách của bạn với đảo ngược dường như không phải là một lựa chọn tồi, mặc dù, nhưng tôi không phải là một chuyên gia .NET, vì vậy tôi là một chút hoài nghi về những gì tôi nói, lol. – Xaisoft
được quay lại C# 3.0. Không có C# với phiên bản 3.5 (xem bài đăng này để biết chi tiết http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c) – Vaccano