【问题标题】:How to use Order By in this MSDN example如何在此 MSDN 示例中使用 Order By
【发布时间】:2023-03-10 18:50:01
【问题描述】:

我正在尝试弄清楚如何使用这个 orderBy 参数。我不确定我应该传入什么。

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

   public virtual IEnumerable<TEntity> Get(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = "")
    {
        IQueryable<TEntity> query = dbSet;

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            return orderBy(query).ToList();
        }
        else
        {
            return query.ToList();
        }
    }

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-4.1 repository-pattern


    【解决方案1】:

    如果您从 msdn 文章中阅读此内容

    “代码 Func, IOrderedQueryable> orderBy 也意味着调用者将提供一个 lambda 表达式。但在这种情况下,表达式的输入是 TEntity 类型的 IQueryable 对象。表达式将返回该 IQueryable 的有序版本对象。例如,如果为 Student 实体类型实例化存储库,则调用方法中的代码可能会为 orderBy 参数指定 q => q.OrderBy(s => s.LastName)。"

    它的意思是,当您调用 Get 时,您应该提供一个 lambda 表达式,该表达式将是 IQueryable 上的 Func 或函数,提供 IOrderedQueryable。

    因此,对于文章中使用的 Student 对象,您会使用。

    var students = repository.Get(x => x.FirstName = "Bob",q => q.OrderBy(s => s.LastName));
    

    【讨论】:

    • 其实我确实看过,但是看不懂。我不断收到错误。 Intellisense 实际上让我感到困惑,这就是为什么我没有得到正确答案的原因。谢谢。
    • 你们知道如何将 OrderBy 设置为 ASC 或 DESC 吗?
    • @user1477388 es 有一个 OrderBy 方法,它是 asc 和 OrderByDescending 方法。
    猜你喜欢
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2020-11-19
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多