使用 EF DbSet 对数据进行排序 [关闭]

Posted

技术标签:

【中文标题】使用 EF DbSet 对数据进行排序 [关闭]【英文标题】:Sorting data using EF DbSet [closed] 【发布时间】:2011-05-20 15:37:22 【问题描述】:

有没有办法将 order by 子句传递给 EF 中的 DbSet 类?

我正在使用 C#

【问题讨论】:

【参考方案1】:

我不确定如何从 DbSet 执行此操作,但您可以通过访问 IQueryableDBContext 执行此操作 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 6不同的DbSet名称来自它所持有的类

使用带有DbSet的接口,可以使用EF Core吗?

EF dbcontext 在 dynamo 自定义节点中返回一个空的 dbset

模拟 EF 核心 dbcontext 和 dbset

是否可以使用“Array.IndexOf”或其他代码派生数据对数据库中的 EF 查询结果进行排序?

EF 6.0 中缺少 DbSet<entity>.Load() 函数