2011-11-29 2 views
0

안녕 나는 linq에서 이것을 할 제안이 필요합니다. IsAvail = true이고 5 개의 첫 번째 행을 가져 오는 모든 행을 선택해야합니다. 나는 다음의 쿼리를했다LINQ 모두 선택하고 건너 뛰기에서 첫 번째 5 가져가

from i in entity.Bills.OrderBy(e => e.From).Skip(CurrentPage).Take(intRecordsPerPage) 
join c in entity.Cust on i.Id equals c.Id into c_join 
from c in c_join.DefaultIfEmpty() 
where i.IsAvail == true 
select new { i, Id = c.Id }; 

그러나 IsAvail이 6 번째로 기록 될 때 나는 첫번째 페이지에서 그것을 얻을 수 없다. 두 번째 페이지 만 가져올 수 있습니다. 첫 번째 페이지는 비어 있습니다. 나는이

답변

0

간단히 건너 뛰기를 넣어 해결할 수있는 방법을 /를 마지막 쿼리의에서 보자 (나는 또한 모든 일에 대한 쿼리 식을 where 절 이전에 넣고 사용했습니다

var allRecords = from i in entity.Bills 
       where i.IsAvail 
       orderby i.From 
       join c in entity.Cust on i.Id equals c.Id into c_join 
       from c in c_join.DefaultIfEmpty() 
       select new { i, Id = c.Id }; 

var page = allRecords.Skip(CurrentPage).Take(intRecordsPerPage); 

, 그냥 정리하기.)

+0

Thanks Jon, 건너 뛰기를 사용하기 전에 Orderby가 필요합니다. –

+0

@de_spen :'OrderBy'는 여전히'Skip' /'Take' 앞에 있습니다. –

관련 문제