首页 新闻 搜索 专区 学院

EF Linq 分页

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-13 09:48
        public List<T> getPageData2(Expression<Func<T, bool>> where, Expression<Func<T, object>> order, int pageIndex, int pageSize, out int Total)
        {
            //条件
            var queryList = where != null ? entities.Where(where) : entities;
            //排序
            queryList = order != null ? queryList.OrderByDescending(order) : queryList;
            //总数量
            Total = queryList.Count();

            return queryList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
        }

我找了很久还是没有解决这个问题,请问为什么这样写Expression就会报错呢,而我直接用Func<T, bool> 就不会。是我的写法有问题吗?

I-Can的主页 I-Can | 初学一级 | 园豆:121
提问于:2015-07-11 09:40
< >
分享
最佳答案
0

Func<TObject, bool>是委托

Expression<Func<TObject, bool>>是表达式

Expression编译后就会变成delegate,才能运行。比如

Expression<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex.Compile();

参考:http://q.cnblogs.com/q/37952/

收获园豆:10
at小怪兽 | 小虾三级 |园豆:760 | 2015-07-11 11:59

我知道一个是委托,一个表达式。但是我不明白的就是这里写法好像没有问题,为什么转换list的时候报错,而且Total = queryList.Count();也会报错。指教一下,谢谢

I-Can | 园豆:121 (初学一级) | 2015-07-11 12:09

@米粒儿。: 

改成int试试,报错是显示类型转换问题,

at小怪兽 | 园豆:760 (小虾三级) | 2015-07-13 09:39

@莫宇: 好了,太感谢了。

I-Can | 园豆:121 (初学一级) | 2015-07-13 09:48

@莫宇: 不好意思,上次解决之后int 类型太死了,还有别的写法或者解决方案吗

I-Can | 园豆:121 (初学一级) | 2015-07-16 16:44
其他回答(1)
0

你好博主,你可以把你的分页使用方法贴出来吗? 我用的方法会一直报错。

KainJC | 园豆:60 (初学一级) | 2016-02-03 14:49
 public List<T> getPageData2<dynamic>(Expression<Func<T, bool>> where, Expression<Func<T, dynamic>> order, int pageIndex, int pageSize, out int Total)

试试这个吧。

支持(0) 反对(0) I-Can | 园豆:121 (初学一级) | 2016-02-03 15:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册