2
私はIEnumerableの奇妙な動作を発見しました。 Linq to XMLを使ってコレクションを作成し、コレクションをループして要素を変更するよりも、ループを通過するたびにコレクションのサイズが1ずつ減少します。コンテンツを変更するとIEnumerableが減少しますか?
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");
}
しかし、私は、LINQ式の末尾にのみToArray<XElement>()
を追加した場合、問題が解決されています。ここでは、私が何を言っているかです。
誰も私にこの理由が説明できますか?ありがとう。
OKですが、なぜもう一度評価されますか? – Vale