LINQ选择全部并获得跳过前五

时间:2011-11-29 06:52:29

标签: linq linq-to-entities

您好我需要建议在linq中执行此操作。需要选择IsAvail = true的所有行并获得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日被证实为真时,我无法在第一页获得它。 我只能进入第二页,第一页仍然是空白。 我怎么能解决这个问题

1 个答案:

答案 0 :(得分:0)

只需将Skip / Take放在查询的 end

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子句并使用了查询表达式来处理整个事情,只是为了整洁。)