日期:2014-05-20  浏览次数:20799 次

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次。

请问循环内的循环更新的数据如何才能实时的反应到外循环中去?
谢谢!!!
------最佳解决方案--------------------