2015-04-17 5 views
3

У меня есть Linq запрос как:LINQ запроса для возврата вложенного списка для уникальных предметов

  var leaveDetails = (from l in leaveList 
      group l by new {l.LeaveDateStart.Year, l.LeaveType} 
      into yearGroup 
      select new 
      { 
       yearGroup.Key.Year, 
       yearGroup.Key.LeaveType, 
       LeaveTaken = yearGroup.Sum(l => EntityFunctions.DiffDays(l.LeaveDateStart, l.LeaveDateEnd)) 

      }).ToList(); 

С результатами, показанными ниже:

Image showing query results Однако я хочу, чтобы группа по отчетливому году. Так что за каждый уникальный год у меня есть список типов отпуска и дни отпуска.

Я пробовал делать это в интерфейсе в javascript, но он выглядит грязным. Есть ли способ сделать это в C# или в запросе linq. Спасибо

+0

просто не группировка по 'l.LeaveType', и вы получите список с уникальным году – Grundy

+0

группы по результату, что у вас есть в год, и все готово. – Maarten

+0

@Maarten звучит работоспособно. Вы не согласны с публикацией в качестве ответа. – mboko

ответ

1

У вас есть текущий результат, который сгруппирован по году и типу отпуска. Вы можете просто группировать свой текущий результат по годам и выбирать тип отпуска и оставить в качестве значения для каждой группы.

Как это (примечание: не проверял):

var leaveDetailsPerYear = (from l in leaveDetails 
          group l by l.Year 
          into yearGroup 
          select new { 
           Year = yearGroup.Key, 
           Data = yearGroup.ToList() 
          } 
         ) 
          .ToList(); 
+0

Спасибо, что это отлично работает с незначительным редактированием. 'Year = yearGroup.Key' в инструкции select. – mboko

+0

Да, я вижу это сейчас. Исправленный. – Maarten

Смежные вопросы