4

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

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

1 回答 1

3

只需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);
}

BTWDbSet<T>实现IQueryable<T>,所以你不需要调用AsQueryable().

于 2013-01-28T11:20:39.567 回答