首页 新闻 会员 周边

entity framework 分页动态排序

0
悬赏园豆:15 [已解决问题] 解决于 2017-07-20 23:02
            var query = dbSet.Where(where);

            var property = typeof(TEntity).GetProperty(page.Order);
            if (property != null)
            {
                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);
            }

 

上面是项目中底层分页方法中处理动态排序的代码。现在想改成所有分页都按表的第一个字段来排序,也就是生成的SQL语句是   SELECT * FROM talbe  ORDER BY 1 desc

或者怎么样找到主键然后按照主键来排序。

t101lian的主页 t101lian | 初学一级 | 园豆:32
提问于:2017-07-10 22:32
< >
分享
最佳答案
1

 你是要从TEntity找到设置的主键字段吗  一般主键使用[Key]特性标识  可以通过反射获取TEntity的CustomerAttribute集合找到包含Key的字段

收获园豆:15
大杯美式不加糖不加奶 | 小虾三级 |园豆:994 | 2017-07-11 10:33

是的, 有[Key]特性标识,,可是怎么获取

t101lian | 园豆:32 (初学一级) | 2017-07-11 11:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册