使用EF DbSet对数据进行排序

时间:2011-05-20 15:37:23

标签: c# entity-framework-4.1 code-first

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

我正在使用C#

7 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分: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);
            }
        }
    }
}

答案 2 :(得分:3)

如何直接在实体上使用.OrderBy

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

答案 3 :(得分:2)

正如Alexandre所提到的,你可以在查询中这样做:

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

这里_db.Employees是DbSet。

答案 4 :(得分:1)

这必须在查询中完成,

或者你需要在Edmx中定义一个QueryView。

QueryView可用于指定/排序/过滤数据。

看看这个:DefiningQuery versus QueryView

答案 5 :(得分:0)

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

答案 6 :(得分:-1)

首先你必须导入Linq

using System.Linq;
...
_context.DBSetEntity.OrderBy(predicate);