排序往往是从前台传过来一个字符串列名 怎样根据列名转成q.OrderBy(d => d.Name)这种形式
public IEnumerable<T> GetPagedList<S>(ISpecification<T> spec, int pageIndex, int pageSize, ref long total, Expression<Func<T, S>> orderBy, bool descending)
排序参数怎样传入
用lamd表达式:
public class Test
{
public int ID{get;set;}
public DateTime DateAdded{get;set;}
}
GetPagedList(...,...,...,...,t=>t.DateAdded,...)
这样调用即可按时间排序
我是从前台传过来的字符串列名,怎样生成排序表达式,还有就是如果我是
Include另一个对象怎样按另一个对象列来排序
自己写个函数,根据传过来的字符串来判断根据什么来排序。再放入orderby方法里面
我是从前台传过来的字符串列名,怎样生成排序表达式,还有就是如果我是
Include另一个对象怎样按另一个对象列来排序
可以考虑这里的方法:Dynamically Build LINQ Queries Using Reflection
通过反射动态生成LINQ, 用法类似于 q.OrderBy("OrderByPropertyName")
如何动态排序include进来的对象列
IQueryable<tWorkOrderDetail> source = DataContext.Set<tWorkOrderDetail>().Include(a=>a.tWorkOrder).Where(spec.SatisfiedBy());
total = source.Count();
source = source.OrderBy(orderBy,descending);
return source.Skip((pageIndex - 1) * pageSize).Take(pageSize).AsEnumerable<tWorkOrderDetail>();
如何排序tWorkOrder对象列