Odpowiedzi:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
take
tylko pierwsze 5 wierszy z bazy danych?
Rozwiązanie:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
[Oferując nieco bardziej opisową odpowiedź niż odpowiedź udzielona przez @Ajni .]
Można to również osiągnąć za pomocą płynnej składni LINQ :
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
Należy zauważyć, że każda z tych metod ( Where
, OrderBy
, Take
), który pojawia się w tej instrukcji LINQ przyjmuje wyrażenie lambda jako argument. Należy również pamiętać, że dokumentacja Enumerable.Take
zaczyna się od:
Zwraca określoną liczbę ciągłych elementów od początku sekwencji.
Additional information
Czasami konieczne jest powiązanie modelu z modelami widoku i podanie błędu konwersji typu . W tej sytuacji powinieneś użyć ToList()
metody.
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5).ToList();
Samo myślenie, że możesz nie znać sekwencji Od-> Gdzie-> Wybierz, jak w skrypcie sql, to jest jak Select-> From-> Where.
Ale możesz nie wiedzieć, że wewnątrz Sql Engine jest on również analizowany w sekwencji „ From-> Where-> Select ”. Aby to sprawdzić, możesz wypróbować prosty skrypt
select id as i from table where i=3
i to nie działa, powodem jest silnik będzie analizować Gdzie przed Select , więc nie będzie wiedział, alias I w którym . Aby to zadziałało, możesz spróbować
select * from (select id as i from table) as t where i = 3