我有一个在使用时非常通用的存储库类,并没有具体引用我的表。下面显示的是获取表格中所有项目的功能之一。我想做的是扩展它,以便可以订购结果。有没有办法传入谓词/表达式或类似的东西?
public IQueryable<T> All<T>() where T : class
{
return _context.Set<T>().AsQueryable();
}
答案 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()
。