#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 })
.