LINQ ошибка компилятора "does not contain a definition for 'OrderByDescending' ....."

Вот такое запрос:

var entities = await _context.Bookings
   .Where(item => item.PatientId == patientId && item.IsBooked == true)
   .Select(item => item.OrderByDescending(c => c.SlotId).FirstOrDefault())
   .Include(item => item.Doctor)
   .ToListAsync();

Ошибка

'Booking' does not contain a definition for 'OrderByDescending' and no accessible extension method 'OrderByDescending' accepting a first argument of type 'Booking' could be found (are you missing a using directive or an assembly reference?)

Пишут, что так бывает если пропустили using System.Linq;, но я не пропустил.

Что делать?


Ответы (1 шт):

Автор решения: Faraday

При использовании .Select вы передаёте в лямбду один элемент, т.е., НЕ КОЛЛЕКЦИЮ. Соответственно, метод .OrderByDescending должен вызывать из коллекции для её сортировки

UPD: Т.е., вам нужно вынести этот метод немного выше. Примерно вот так:

var entities = await _context.Bookings
   .Where(item => item.PatientId == patientId && item.IsBooked == true)
   .OrderByDescending(c => c.SlotId)
   .Include(item => item.Doctor)
   .ToListAsync();
→ Ссылка