您好我需要建议在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日被证实为真时,我无法在第一页获得它。 我只能进入第二页,第一页仍然是空白。 我怎么能解决这个问题
答案 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
子句并使用了查询表达式来处理整个事情,只是为了整洁。)