使用 EF DbSet 对数据进行排序 [关闭]
Posted
技术标签:
【中文标题】使用 EF DbSet 对数据进行排序 [关闭]【英文标题】:Sorting data using EF DbSet [closed] 【发布时间】:2011-05-20 15:37:22 【问题描述】:有没有办法将 order by 子句传递给 EF 中的 DbSet 类?
我正在使用 C#
【问题讨论】:
【参考方案1】:我不确定如何从 DbSet 执行此操作,但您可以通过访问 IQueryable 从 DBContext 执行此操作 p>
private readonly DbContext context;
...
context.Set<T>().OrderBy(item => item.Property)
【讨论】:
我知道这不是我所要求的,但它确实在视图中完成了工作【参考方案2】:直接在实体上使用.OrderBy
怎么样?
db.Employees.OrderBy(p => p.Id);
【讨论】:
【参考方案3】:这里的 db.Employees 是一个 DBSet。这就是你想要做的吗?
using System.Linq;
namespace MyNamespace
public class MyClass
public DBContext db;
public void MyMethod
foreach (var emp in db
.Employees
.Where(e => e.IsActive) // (or whatever)
.OrderBy(e => e.LastName))
DoSomething(emp);
【讨论】:
【参考方案4】:正如 Alexandre 所说,您可以在如下查询中执行此操作:
var emps = from e in _db.Employees
orderby e.FirstName
select e;
这里 _db.Employees 是 DbSet。
【讨论】:
【参考方案5】:这必须在查询中完成,
或者您需要在 Edmx 中定义一个 QueryView。
QueryView 可用于指定/排序/过滤数据。
看看这个:DefiningQuery versus QueryView
【讨论】:
您可以先从代码中使用 EDMX,但这又有点违背整个代码优先的概念。【参考方案6】:using System.Data.Entity;
using System.Linq;
var items = DataContext.Employees.OrderBy(x=> x.Name).ToList();
或者,对于异步:
var items = await DataContext.Employees.OrderBy(x=> x.Name).ToListAsync();
【讨论】:
【参考方案7】:首先你必须导入 Linq
using System.Linq;
...
_context.DBSetEntity.OrderBy(predicate);
【讨论】:
这不是一个真正的答案,而是一个补充,对吧?以上是关于使用 EF DbSet 对数据进行排序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
EF dbcontext 在 dynamo 自定义节点中返回一个空的 dbset