.net的mvc开发中,我用了一个EF框架的泛形类(BaseDal),我在里面写了一个按条件查询
的方法,但是那个排序的lambda表达式我不知道写
public static List<T> GetPageListBy<TKey>(int pageIndex, int pageSize, ref int rowCount, System.Linq.Expressions.Expression<Func<T, bool>> selectWhere, System.Linq.Expressions.Expression<Func<T, TKey>> orderLambda, bool isAsc = true)
{
using (Mvc_TaoBaoEntities db = new Mvc_TaoBaoEntities())
{
rowCount = db.Set<T>().Where(selectWhere).Count();
if (isAsc)
{
return db.Set<T>().Where(selectWhere).OrderBy<T, TKey>(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
else
{
return db.Set<T>().Where(selectWhere).OrderByDescending<T, TKey>(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
}
}
调用的方法
List list = BaseDAL.SelectByPaged(1, 10, 1 == 1, "lambda表达式的排序语句").ToList();
public static List<T> GetPageListBy<TKey>(int pageIndex, int pageSize, ref int rowCount, System.Linq.Expressions.Expression<Func<T, bool>> selectWhere, System.Linq.Expressions.Expression<Func<T, TKey>> orderLambda, bool isAsc = true)
{
using (Mvc_TaoBaoEntities db = new Mvc_TaoBaoEntities())
{
rowCount = db.Set<T>().Where(selectWhere).Count();
if (isAsc)
{
return db.Set<T>().Where(selectWhere).OrderBy<T, TKey>(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
else
{
return db.Set<T>().Where(selectWhere).OrderByDescending<T, TKey>(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
}
}
在线等回答,大神进来帮忙啊
List list = BaseDAL.SelectByPaged(1, 10, 1 == 1, x => x.id).ToList(); //比如按照id排序
晕,1==1这个也不对
List<Goods> list = BaseDAL<Goods>.SelectByPaged(1, 10, x => x.字段 == 什么, x => x.排序字段).ToList();