2015-11-15 4 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 
       }; 

Wich дать мне этот результат в 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() 
      }; 
Смежные вопросы