首页 新闻 会员 周边

ef 分页排序问题(倒序无效)

0
悬赏园豆:10 [已解决问题] 解决于 2017-06-27 16:54
 
第一张是分页方法,第二张是一个页面分页查询生成的SQL语句。按照需求是要按creation_date(创建时间)字段倒序排列,但是生成的语句把creation_date当作字符串查询出来了,所以导致分页 倒序无效了。为什么会生成这样的语句, 应该怎么修改?
问题补充:

所有表都有creation_date(创建时间)字段, 如果要默认creation_date倒序排列改怎么修改,求大神赐教,先谢过!

t101lian的主页 t101lian | 初学一级 | 园豆:32
提问于:2017-06-27 13:38
< >
分享
最佳答案
0
       var parameter = Expression.Parameter(typeof(TEntity), "p");
                var propertyAccess = Expression.MakeMemberAccess(parameter, property);
                var orderByExp = Expression.Lambda(propertyAccess, parameter);
                string methodName = page.isDesc ? "OrderByDescending" : "OrderBy";
                MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName, new Type[] { typeof(TEntity), property.PropertyType }, query.Expression, Expression.Quote(orderByExp));
                query = query.Provider.CreateQuery<TEntity>(resultExp);

自己解决了, 也是在园子里找到的答案

t101lian | 初学一级 |园豆:32 | 2017-06-27 15:57
其他回答(2)
1

list.orderby(m=>m.字段)而不是外面随便点一个就可以的.

收获园豆:3
吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-27 13:41

 

现在的分页改成这样了对吗? 但还是不知道 orderby怎么传值

支持(0) 反对(0) t101lian | 园豆:32 (初学一级) | 2017-06-27 14:40

@t101lian: orderby和前面一样.传表达式树.

你这种玩玩可以.实际项目这么封装没什么意义.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-06-27 15:00
0
你的where 会:.where(func)
为什么 order 不会写成这样呢......
.order(page.orderFunc)
收获园豆:7
czd890 | 园豆:14412 (专家六级) | 2017-06-27 13:46

分析表达式。 page.Order. page是怎么鬼,linq哪里知道,对不

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-06-27 13:47

@czd890:  是分页的信息的, 

 

现在的分页已经改成这样, 但是不知道调用时orderby改怎么传值

支持(0) 反对(0) t101lian | 园豆:32 (初学一级) | 2017-06-27 14:39

@t101lian: 如果要用string的order 字段。那你就要自己编译linq语句了。

比如这样:http://blog.csdn.net/lan_liang/article/details/68523451

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2017-06-27 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册