使用PredicateBuilder和Entity Framework的可选IQueryable排序

3
我正在使用来自Albahari的PredicateBuilder和LINQKit构建一个具有可选参数、可选OrderBy、可选Skip()和可选Take()的LINQ查询。
PredicateBuilder使得构建可选参数变得容易,但是我在其他问题上遇到了问题。为了简化这个问题,以下的内容有效:
var query = this.MyContext.Things.AsExpandable.Where(predicate).OrderBy(s => s.Name);
return query.ToList();

我希望能够做类似这样的事情,这样我就可以在if语句中使用OrderBy。然而它并不起作用,结果并没有按照名称排序。
var query = this.MyContext.Things.AsExpandable().Where(predicate);
query.OrderBy(s => s.Name);
return query.ToList();

有人能指导我一下吗?我是一个NHibernate的转换者,现在还在逐渐理解LINQ。

1个回答

7

您的query变量缺少重新赋值 - OrderBy()(和其他所有标准查询运算符一样)会返回一个新的IQueryable<T>

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

谢谢!当你的大脑被困在不同的事情处理方式上(比如NHibernate)时,很容易忽略简单的事情。 - NickH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接