具有PredicateBuilder和Entity Framework的IQueryable可选OrderBy

时间:2011-10-04 17:52:01

标签: c# linq entity-framework

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

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。

1 个答案:

答案 0 :(得分:7)

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

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