使用 EF DbSet 对数据进行排序

本文关键字:排序 数据 EF DbSet 使用 | 更新日期: 2023-09-27 17:56:59

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

我正在使用 C#

使用 EF DbSet 对数据进行排序

我不确定如何从 DbSet 执行此操作,但您可以通过访问 IQueryableDBContext 执行此操作

private readonly DbContext context;
...
context.Set<T>().OrderBy(item => item.Property)

直接在实体上使用.OrderBy怎么样?

db.Employees.OrderBy(p => p.Id);

这里 db.员工是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);
            }
        }
    }
}

正如Alexandre所提到的,你可以在查询中做到这一点,如下所示:

var emps = from e in _db.Employees
            orderby e.FirstName
            select e;

这里_db。员工是 DbSet。

必须在查询中完成,

或者您需要在 Edmx 中定义 QueryView。

查询视图可用于指定/排序/过滤数据。

看看这个: DefiningQuery vs. QueryView

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();