首页 新闻 会员 周边

EF查询排序问题

0
悬赏园豆:5 [待解决问题]

排序往往是从前台传过来一个字符串列名  怎样根据列名转成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)

排序参数怎样传入

J-Pei的主页 J-Pei | 初学一级 | 园豆:185
提问于:2012-03-19 15:59
< >
分享
所有回答(3)
0

用lamd表达式:

public class Test
{
  public int ID{get;set;}
  public DateTime DateAdded{get;set;}
}

GetPagedList(...,...,...,...,t=>t.DateAdded,...)

这样调用即可按时间排序

artwl | 园豆:16736 (专家六级) | 2012-03-19 16:03

我是从前台传过来的字符串列名,怎样生成排序表达式,还有就是如果我是

Include另一个对象怎样按另一个对象列来排序

支持(0) 反对(0) J-Pei | 园豆:185 (初学一级) | 2012-03-20 08:48
0

自己写个函数,根据传过来的字符串来判断根据什么来排序。再放入orderby方法里面

小小刀 | 园豆:1991 (小虾三级) | 2012-03-19 19:46

我是从前台传过来的字符串列名,怎样生成排序表达式,还有就是如果我是

Include另一个对象怎样按另一个对象列来排序

支持(0) 反对(0) J-Pei | 园豆:185 (初学一级) | 2012-03-20 08:48
0

可以考虑这里的方法:Dynamically Build LINQ Queries Using Reflection

通过反射动态生成LINQ, 用法类似于 q.OrderBy("OrderByPropertyName")

dudu | 园豆:31048 (高人七级) | 2012-03-20 10:49

如何动态排序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对象列

支持(0) 反对(0) J-Pei | 园豆:185 (初学一级) | 2012-03-20 12:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册