LINQ 쿼리가 있습니다.
var list = from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t;
이 쿼리를 수정하여 데이터베이스에서 5 개의 결과 만 선택하려면 어떻게해야합니까?
답변
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의 Lambda 기반 접근 방식을 사용하여이 작업을 수행 할 수도 있습니다.
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 문에 표시가 걸리는 람다 식 인수로한다. 또한 설명서는 다음으로 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();
답변
SQL 스크립트에서와 같이 From-> Where-> Select 시퀀스에 익숙하지 않다고 생각하면 Select-> From-> Where 와 같습니다 .
그러나 Sql Engine 내에서 ‘ From-> Where-> Select ‘ 의 순서로 구문 분석된다는 것을 알지 못할 수도 있습니다. 유효성을 확인하려면 간단한 스크립트를 사용해보십시오.
select id as i from table where i=3
작동하지 않습니다. 이유는 엔진이 Where before Select 를 구문 분석 하므로 where 에서 별칭 i를 알 수 없기 때문입니다 . 이 작업을 수행하려면 시도해 볼 수 있습니다
select * from (select id as i from table) as t where i = 3