Ответ 1
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
У меня есть запрос LINQ:
var list = from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t;
Как я могу изменить этот запрос, чтобы выбрать только пять результатов из базы данных?
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
Решение:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
Это также может быть достигнуто с использованием подхода Linq, основанного на лямбда;
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
[Предлагаем несколько более описательный ответ, чем ответ, предоставленный @Ajni.]
Это также может быть достигнуто с помощью LINQ свободного синтаксиса:
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
Обратите внимание, что каждый метод (Where
, OrderBy
, Take
), который появляется в этом операторе LINQ, принимает значение lambda expression в качестве аргумента. Также обратите внимание, что документация для Enumerable.Take
начинается с:
Возвращает указанное количество смежных элементов с начала Последовательность.
Additional information
Иногда необходимо привязать модель к моделям представлений и дать ошибку преобразования типа. В этой ситуации вы должны использовать метод ToList()
.
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5).ToList();
Просто думая, что вы, возможно, не знакомы с последовательностью From- > Where- > Select, как в sql script, это похоже на Выбрать- > От- > Где.
Но вы, возможно, не знаете, что внутри Sql Engine он также анализируется в последовательности ' От- > Где- > Выбрать'. Чтобы проверить его, вы можете попробовать простой script
select id as i from table where i=3
и это не сработает, причина в том, что движок будет анализировать Где до Выбрать, поэтому он не будет знать псевдоним я в , где > . Чтобы выполнить эту работу, вы можете попробовать
select * from (select id as i from table) as t where i = 3
LINQ Query для выбора 5 лучших записей.
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);