Поведение FirstOrDefault непосредственно в операторе LINQ
Похоже, что я, возможно, пропустил что-то простое в синтаксисе, но я бы хотел получить результаты FirstOrDefault из оператора linq напрямую, не имея необходимости сначала хранить IEnumerable во временной переменной. Что-то вроде этого:
var bestCar = from c in cars
orderby c.Price
select first c
Я знаю, что ключевое слово first на самом деле не существует, но иллюстрирует, что я хотел бы сделать. Я также знаю, что могу обернуть оператор... select в скобках и вызвать FirstOrDefault напрямую, но я думаю, что приведенный выше синтаксис чище и легче читать.
Ответы
Ответ 1
Enumerable.FirstOrDefault - один из методов расширения класса Enumerable, который не имеет соответствующего элемента синтаксиса LINQ. Единственный способ привязки к этому методу - это синтаксис вызова метода.
Вы можете избежать временного, выполнив follownig
var bestCar = (from c in cars
orderby c.Price
select c).FirstOrDefault();
Ответ 2
Нет способа сделать это. LINQ используется для определения запроса. Это не вызывает оценку, тогда как выполнение FirstOrDefault
(или перечисление по ней) выполняет запрос.
Ответ 3
var bestCar = (from c in cars
orderby c.Price
select c).FirstOrDefault()
ИЛИ
var bestCar = cars.OrderBy(c => c.Price).FirstOrDefault()
Ответ 4
var bestCar = (from c in cars
orderby c.Price
select c).FirstOrDefault();
Извините, я не полностью прочитал ваш вопрос, кажется, что это может быть именно то, чего вы не хотите делать.