带有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取代时,上述代码有效)

有人能给我推荐其他选择吗?

带有Skip和Take的OrderByDescending在LINQ中显示错误

这适用于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);
    }