Linq两个选择语句,第二个使用第一个结果,

时间:2013-10-09 10:12:44

标签: c# linq

这个linq查询效果很好。

var qry = context.Boxes
          .GroupBy(k=>k.Box_ID)
          .Select( group => new {
              Box_ID = group.Key,
              TotalA = group.Sum(p => p.A),
              TotalC = group.Sum(p => p.C)
          })
          .Select(p => new {
              Box_ID = p.Kasa_ID,
              TotalA = p.TotalA,
              TotalC = p.TotalC,
              DiffAC = p.TotalA - p.TotalC
          });

但是,我看到了这些类型的select语句,第二个使用了first select的匿名类型结果,如下所示:

  var qry = context.Boxes
            .GroupBy(k => k.Box_ID)
            .Select(group => new
            {
                Box_ID = group.Key,
                TotalA = group.Sum(p => p.A),
                TotalC = group.Sum(p => p.C)
            })
            .Select(p => new
            {
                Box_ID,  //*** compiler error
                TotalA,  //I'm asking about these 3 lines, is this syntax possible 
                TotalC,  //TotalC = p.TotalC,
                DiffAC = p.TotalA - p.TotalC // calculate
            });

评论包含详细信息。

当我尝试编译第二个查询时,编译器给出了错误“当前上下文中不存在名称'Box_ID'。”

事实上,第一种语法毫无疑问,但第二种语法更具可读性。我该如何使用第二种语法?或者我可以使用它的条件。

1 个答案:

答案 0 :(得分:4)

        .Select(p => new
        {
            p.Box_ID,
            p.TotalA,
            p.TotalC,
            DiffAC = p.TotalA - p.TotalC // calculate
        });