首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

ef 中施用 foreach 查询的困惑,结果不正确,

2012-12-19 
ef 中使用 foreach 查询的困惑,结果不正确,急!先贴点代码:数据是个树型var q3 ibdb.HISNETS.OrderByDesc

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

请问循环内的循环更新的数据如何才能实时的反应到外循环中去?
谢谢!!!
[最优解释]


 外层的foreach不需要

var q3 = ibdb.HISNETS.OrderByDescending(m => m.Rgt);

  var q31 = q3.Where(m => m.country != 1 m.Lft < item.Lft && m.Rgt > item.Rgt);

                     if (q31.Max(m => m.Star) <= item.Star)
                     {    
                         //更新父级GBV
                         foreach (var sonItem in q31)
                         {
                            sonItem.GBV -= item.GBV;
    sonItem=Country = "1";
                         }
                     }
 


你把逻辑都搞乱了,哥看了半天才看懂~~~
[其他解释]
SORRY,查清楚了,不是更新问题,是代码逻辑有误,THX

热点排行