我解析了一些数据
var result = xml.Descendants("record").Select(x => new F130Account
{
Account = x.Descendants("Account").First().Value,
});
然后我尝试更新
foreach (var item in result)
item.Quantity = 1;
在此之后我result.Sum(a => a.Quantity)
为零......为什么?
答案 0 :(得分:5)
这是因为每次开始枚举时都会再次评估result
集合,因此Sum
会在新的F130Account
个对象上运行,而不是foreach
循环。这就是LINQ和懒惰的方式。
首先将结果初始化为List<F130Account>
:
var result = xml.Descendants("record").Select(x => new F130Account
{
Account = x.Descendants("Account").First().Value,
}).ToList();
之后,foreach
和Sum
都将在同一个对象集合上运行。