我有下表,
ItemTable,
Col1 : ItemID(int)
Col2 : MRP(Decimal)
对于我需要一次传递选定数量的项目的应用程序之一,他们会向我发送传递给他们的lastId,最初的要求是传递最新的项目,我能够使用它以下查询,
var itemList = itemRepository.AsQueryable()
.Where(r => r.ProductID == productID && r.IsActive == true && r.ItemID< lastId)
.OrderByDescending(r => r.ItemID)
.Take(numberOfItems)
.ToList();
然而现在添加了一个排序选项,这是MRP列,虽然我只有最后一个ID,但我怎么能得到这个?我尝试了以下查询,没有运气。
var itemList = itemRepository.AsQueryable()
.Where(r => r.ProductID == productID && r.IsActive == true && r.ItemID< lastId)
.OrderByDescending(r => r.ItemID)
.OrderBy(r => r.MRP)
.Take(numberOfItems)
.ToList();
更新:工作代码
根据CamperWill的建议,我更新了我的代码并且使用了skip。
var itemList = itemRepository.AsQueryable()
.Where(r => r.ProductID == productID && r.IsActive == true)
.OrderBy(r => r.MRP)
.Skip(pageNumber * numberOfItems)
.Take(numberOfItems)
.ToList();
答案 0 :(得分:2)
LastID
将无法帮助您进行分页。另外,如上面的评论中所示,通过添加第二个排序有效地忽略了第一个排序。
您可以考虑跟踪请求的页码,并使用Skip()扩展名。
// input parameter 'page'
var itemList = itemRepository.AsQueryable()
.Where(r => r.ProductID == productID && r.IsActive == true)
.OrderBy(r => r.MRP)
.Skip( (page-1)*numberOfItems )
.Take(numberOfItems)
.ToList();