2013-10-09 39 views
1

这个linq查询效果很好。Linq两条select语句,第二条使用first的结果,

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语句,第二个使用首先选择的匿名类型的结果,这样写的:

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'在当前的名称中不存在”。

其实毫无疑问,第一个语法,但第二个是更具可读性。我怎样才能使用第二种语法?或者在哪些条件下我可以使用它。

回答

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

非常感谢。 – Ayhan