【问题标题】:Repository pattern how to define an OrderBy存储库模式如何定义 OrderBy
【发布时间】:2013-01-28 11:14:31
【问题描述】:
我有一个非常通用的存储库类,它没有专门引用我的表。下面显示的是获取表中所有项目的功能之一。我想做的是扩展它以便可以订购结果。有没有办法传入谓词/表达式或类似的东西?
public IQueryable<T> All<T>() where T : class
{
return _context.Set<T>().AsQueryable();
}
【问题讨论】:
标签:
entity-framework
c#-4.0
linq-to-entities
【解决方案1】:
只需对所有实体使用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);
}
顺便说一句,DbSet<T> 实现了IQueryable<T>,所以你不需要调用AsQueryable()。