Я обнаружил странное поведение IEnumerable. Когда я создаю коллекцию с использованием Linq to XML, а затем зацикливаю коллекцию и изменяю ее элементы, размер коллекции уменьшается на 1 при каждом прохождении цикла. Вот о чем я говорю:
var nodesToChange = from A in root.Descendants()
where A.Name.LocalName == "Compile"
&& A.Attribute("Include").Value.ToLower().Contains(".designer.cs")
&& A.HasElements && A.Elements().Count() == 1
select A;
foreach (var node in nodesToChange) {
//after this line the collection is reduced
node.Attribute("Include").Value = node.Attribute("Include").Value.Replace(".Designer.cs", ".xaml");
}
Но если я добавлю только ToArray<XElement>()
в конец выражения linq, проблема будет решена.
Может кто-нибудь объяснить мне, почему это происходит? Спасибо.