带有Skip和Take的OrderByDescending在LINQ中显示错误
本文关键字:LINQ 显示 错误 OrderByDescending Skip Take 带有 | 更新日期: 2023-09-27 18:25:50
我的linq是
GetPublishedArticleList().Where(x => x.Category.CatName == catName).OrderByDescending(x=>x.PublishedDate).Skip(skip).Take(last);
当上面的代码运行时,我得到了以下异常
"只有LINQ to Entities中的排序输入才支持方法Skip。必须在方法Skip之前调用方法OrderBy。
我想让LINQ明白,我需要先按降序排列数据,然后才能应用Skip和Take。(当OrderByDescending被OrderBy取代时,上述代码有效)
有人能给我推荐其他选择吗?
这适用于EF5。(净4.5)我看不出你的代码有什么问题。你确定你在测试时有正确的方法顺序吗?源类型是Iqueryable还是Iqueryable?
public virtual IQueryable<TPoco> GetSortedPageList<TSortKey>(Expression<Func<TPoco, bool>> predicate,
Expression<Func<TPoco, TSortKey>> sortBy,
bool descending,
int skipRecords, int takeRecords) {
if (!descending) {
return Context.Set<TPoco>()
.Where<TPoco> predicate)
.OrderBy(sortBy)
.Skip(skipRecords)
.Take(takeRecords);
}
return
Context.Set<TPoco>()
.Where<TPoco>(predicate)
.OrderByDescending(sortBy)
.Skip(skipRecords)
.Take(takeRecords);
}