Использование группы, имея в лямбда-выражении

#c# #linq

#c# #linq

Вопрос:

Кто-нибудь может помочь мне преобразовать приведенный ниже запрос в LINQ с помощью лямбда-выражения.

 select idshiftschedule,Date from Teammateassignments 
where IdClinic = 19
group by IdshiftSchedule,DATE having COUNT(Date)>1
  

Ответ №1:

Это просто фильтр для последующих групп:

  var results = from item in assignments
               where item.IdClient == 19
               group item by new { item.IdShiftSchedule, item.Date } into g
               where g.Count() > 1
               select g.Key;
  

(Я предполагаю, что Count(Date) > 1 на самом деле это просто подсчет количества элементов в группе … мне непонятно, что это будет делать, если Date , например, имеет значение null .)

Комментарии:

1. Спасибо Джону за помощь. Я написал этот запрос, используя лямбда-выражение. но он не работает должным образом. Можете ли вы сказать мне, что в этом не так. Назначения. Где(tma => tma.ClinicId == tmShift. ClinicId ). Выберите(t => t) .GroupBy(s => s.ShiftId, s => s.Date) . Где(p => p.Count() > 1) .ToList()

2. Да, ты прав, Джон, количество (дата)> 1 — это подсчет элементов в группе. В моем случае дата никогда не будет нулевой. Это ненулевой столбец

3. @sid: ваш GroupBy должен быть GroupBy(s => new { s.ShiftId, s.Date }) .