2011-11-29 54 views
0

您好,我需要建議在linq做到這一點。需要選擇IsAvail = true的所有行並獲得5個第一行。我做了以下查詢LINQ選擇所有,並獲得前五跳跳

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是真的在第六次recored我不能得到它在第一頁。 我只能進入第二頁,第一頁保持空白。 我怎樣才能解決這個

回答

0

簡而言之跳過/送在端查詢

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); 

(我也把where條款較早,使用的查詢表達式整個事情,只是爲了整潔。)

+0

感謝Jon,它需要使用skipby之前的Orderby,我只是編輯它 –

+0

@de_spen:'OrderBy'仍然在'Skip' /'Take'之前。 –