c# - IQueryable 可选 OrderBy 与 PredicateBuilder 和 Entity Framework

标签 c# linq entity-framework

我正在使用来自 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。

最佳答案

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

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

关于c# - IQueryable 可选 OrderBy 与 PredicateBuilder 和 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651995/

相关文章:

c# - 如何将此 C# 返回值序列化为 JSON 对象?

entity-framework - Entity Framework Linq 查询 : . Where 链 vs &&

entity-framework - 为什么 Entity Framework 缺少以 'Status' 结尾的表中的最后一个 s

c# - 是否可以使用扩展方法扩展泛型类?

c# - 让 Team Foundation Server 2015 进行代码覆盖的选项

c# - 使用 LINQ 对列表条目进行分组

c# - Linq to entities 支持哪些语句?

c# - 是否有可能使用 Entity Framework 4,让主键在对象上的名称与在表中的名称不同?

entity-framework - 将 Entity Framework 与 SQL Azure 结合使用 - 可靠性

c# - 获取第二个不同类型列表中缺少的元素