具有PredicateBuilder和Entity Framework的IQueryable可选OrderBy

Nic*_*ckH 3 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();
Run Code Online (Sandbox Code Playgroud)

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

var query = this.MyContext.Things.AsExpandable().Where(predicate);
query.OrderBy(s => s.Name);
return query.ToList();
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?我是一个NHibernate转换器,仍然掌握着LINQ.

Bro*_*ass 7

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

query = query.OrderBy(s => s.Name);
Run Code Online (Sandbox Code Playgroud)