2015-11-15 34 views
0

我有这个LINQ查询LINQ的FirstOrDefault清单,在查询内部

var numberGroups = 
      from n in VISRUBs.Where(a => a.VISANA.VISITE.DATEVIS <= d && a.VISANA.VISITE.PANUM == p) 
      group n by n.RUBRIQUE into g 

      select new { 

       RemainderCHAPLIB = g.Key.ANALYSE.CHAPITRE.LIBELLE, 
       RemainderLIB = g.Key.LIBELLE, 

       RemainderRUNUM = g.Key.RUNUM, 
       vals = from vlist in g.OrderByDescending(a=>a.VISANA.VISITE.DATEVIS) 
       select vlist.VALEUR 
       }; 

至极给我这个结果Linqpad LinqPadResult

我想是从最后一个字段选择第一和第二项( vals)这是一个列表。

我已经试过这样:

   var numberGroups = 
      from n in VISRUBs.Where(a => a.VISANA.VISITE.DATEVIS <= d && a.VISANA.VISITE.PANUM == p) 
      group n by n.RUBRIQUE into g 

      select new { 

       RemainderCHAPLIB = g.Key.ANALYSE.CHAPITRE.LIBELLE, 
       RemainderLIB = g.Key.LIBELLE, 

       RemainderRUNUM = g.Key.RUNUM, 
       vals = from vlist in g.OrderByDescending(a =>    a.VISANA.VISITE.DATEVIS) 
       select vlist.VALEUR 
       }; 


      var lst = from n in numberGroups 
      select new 
      { 
       RemainderCHAPLIB = n.RemainderCHAPLIB, 
       RemainderLIB = n.RemainderLIB, 

       RemainderRUNUM = n.RemainderRUNUM, 
       VAL = n.vals.FirstOrDefault() 
      }; 

,但它没有工作,我得到了一个异常

动态SQL ErrorSQL错误代码= -104Token未知 - 54行,列1OUTER

欢迎任何帮助

回答

0

找到了!

var lst = from n in numberGroups.ToList() 
      select new 
      { 
       RemainderCHAPLIB = n.RemainderCHAPLIB, 
       RemainderLIB = n.RemainderLIB, 

       RemainderRUNUM = n.RemainderRUNUM, 
       VAL = n.vals.FirstOrDefault(), 
       ANT = n.vals.Skip(1).FirstOrDefault() 
      };