在我的基础存储库类中
我编写了这个函数,以便可以从数据库中检索排序的数据集合。T 是在类级别定义的泛型
public abstract class RepositoryBase<T>
where T : class
代码是这样的:
public IList<T> GetAll<TKey>(Expression<Func<T, bool>> whereCondition, Expression<Func<T, TKey>> sortCondition, bool sortDesc = false)
{
if (sortDesc)
return this.ObjectSet.Where(whereCondition).OrderByDescending(sortCondition).ToList<T>();
return this.ObjectSet.Where(whereCondition).OrderBy(sortCondition).ToList<T>() ;
}
我的目标是引入一个通用排序参数,以便我可以以这种方式调用该函数:
repo.GetAll (model=>model.field>0, model=>model.sortableField, true)
我的意思是我可以通过匿名函数直接指定排序字段,因此使用 Intellisense ......
不幸的是,这个函数不起作用,因为最后一行代码在编译时会产生错误。
我也试着打电话:
repo.GetAll<Model> (model=>model.field>0, model=>model.sortableField, true)
但这不起作用。
我应该如何编写函数来实现我的目标?
我正在使用 EF 5、c#、.NET 4.5