存储库模式如何定义OrderBy

时间:2013-01-28 11:14:32

标签: entity-framework c#-4.0 linq-to-entities

我有一个在使用时非常通用的存储库类,并没有具体引用我的表。下面显示的是获取表格中所有项目的功能之一。我想做的是扩展它,以便可以订购结果。有没有办法传入谓词/表达式或类似的东西?

public IQueryable<T> All<T>() where T : class
{
    return _context.Set<T>().AsQueryable();
}

1 个答案:

答案 0 :(得分:2)

只需在所有实体上使用Queryable.OrderBy方法:

fooRepository.All().OrderBy(foo => foo.Bar)

如果要添加带谓词的方法:

public IQueryable<T> AllOrderedBy<T,TKey>(Expression<Func<T,TKey>> predicate) 
    where T : class
{
    return _context.Set<T>().OrderBy(predicate);
}

BTW DbSet<T>实施IQueryable<T>,因此您无需致电AsQueryable()