ef 中使用 foreach 查询的困惑,结果不正确,急!
先贴点代码:
数据是个树型
var q3 = ibdb.HISNETS.OrderByDescending(m => m.Rgt).ToList();
//逆遍历网络,逐级去除并更新、累加子级比上级高的节点GBV
foreach (var item in q3)
{
if (item.Country != "1")
{
//取得所有父级q31 其中m.Lft < item.Lft && m.Rgt > item.Rgt 是我确定所有父级的方法,这个是正确的
var q31 = q3.Where(m => m.Lft < item.Lft && m.Rgt > item.Rgt);
if (q31.Select(m => m.Star).Max() <= item.Star)
{
item.Country = "1";
//更新父级GBV
foreach (var sonItem in q31)
{
sonItem.GBV -= item.GBV;
}
}
}
}
基中问题出在
//更新父级GBV
foreach (var sonItem in q31)
{
sonItem.GBV -= item.GBV;
}
这一段
这里sonItem.GBV -= item.GBV; 循环更新了 q3里的数据,但是并没有实时地反映到q3里面去,导致q3里面的GBV数据被多减了N次。
请问循环内的循环更新的数据如何才能实时的反应到外循环中去?
谢谢!!!
------最佳解决方案--------------------