【问题标题】:IQueryable optional OrderBy with PredicateBuilder and Entity Framework带有 PredicateBuilder 和实体框架的 IQueryable 可选 OrderBy
【发布时间】:2011-10-04 17:52:01
【问题描述】:

我正在使用来自Albahari 的 PredicateBuilder 和 LINQKit 来构造一个具有可选参数、可选 OrderBy、可选 Skip() 和可选 Take() 的 LINQ 查询。

PredicateBuilder 使构建可选参数变得容易,但我遇到了其他问题。为了简化问题:

这行得通

var query = this.MyContext.Things.AsExpandable.Where(predicate).OrderBy(s => s.Name);
return query.ToList();

我想做这样的事情,所以我可以将 OrderBy 包装在 if 中。但是它不起作用,结果不按名称顺序。

var query = this.MyContext.Things.AsExpandable().Where(predicate);
query.OrderBy(s => s.Name);
return query.ToList();

有人能指出我正确的方向吗?我是 NHibernate 转换者,但仍在使用 LINQ。

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    您缺少对 query 变量的重新分配 - OrderBy()(与所有其他标准查询运算符相同)返回一个新的 IQueryable<T>

    query = query.OrderBy(s => s.Name);
    

    【讨论】:

    • 谢谢!当您的大脑陷入不同的做事方式(如 NHibernate)时,很容易错过简单的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 2012-08-18
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多