关于IList、IQueryable、IEnumerable与Func、Expression的关系

关于IList、IQueryable、IEnumerable与Func、Expression的关系

session是NHibernate中的ISession对象
IList、IQueryable、 IEnumerable是.NET对象
Func和Expression是C#3.0中的Linq类库中的二个对象
Func:函数,也可称做委托。
Expression:表达式。

以下是这篇文章中用到的三个数据操作的核心对象:
seeion.CreateCriteria, Queryable, Enumerable

seeion.CreateCriteria -> Func<T, bool>
Queryable -> Expression<Func<T, bool>> -> Linq to sql
Enumerable -> Func<T, bool> -> Linq to object
Func = Expression.Compile
Expression = ex => Func(ex)


//没有func或expression的函数,也就是没有where(predicate)条件的函数
//3个返回IList<T>类型的函数IList<T> List()
IList seeion.CreateCriteria     no func/no expression   有意义(
IList Queryable     where=t=>true   no func/no expression   无意义
IList Enumerable    where=t=>true   no func/no expression   无意义
//3个IQueryable<T> List()
IQueryable seeion.CreateCriteria    no func/no expression   有意义
IQueryable Queryable    where=t=>true   no func/no expression   无意义
IQueryable Enumerable   where=t=>true   no func/no expression   无意义
3个IEnumerable<T> List()
IEnumerable seeion.CreateCriteria   no func/no expression   有意义
IEnumerable Queryable   where=t=>true   no func/no expression   无意义
IEnumerable Enumerable  where=t=>true   no func/no expression   无意义


//有func或expression的函数,也就是有where(predicate)条件的函数
//6个返回IList<T>类型的函数IList<T>     List(func/expr)     Speed
IList where         func            1first
IList where.compile()       expression      3third
IList Queryable ex => where(ex) func            4worst
IList Queryable where       expression      2second 
IList Enumerable where      func            1first  
IList Enumerable where.compile()expression      3third

//6个返回IQueryable<T>的函数
IQueryable where            func
IQueryable where.compile()      expression
IQueryable Queryable ex => where(ex)    func
IQueryable Queryable where      expression
IQueryable Enumerable where         func
IQueryable Enumerable where.compile()   expression

//6个返回IEnumerable<T>的函数
IEnumerable where           func
IEnumerable where.compile()     expression
IEnumerable Queryable where     expression
IEnumerable Queryable ex => where(ex)   func
IEnumerable Enumerable where.compile()  expression
IEnumerable Enumerable where        func
以上代码通过筛选后得到6个方法
1.IList where           func            
2.IList where.compile()     expression      
3.IQueryable Queryable ex => where(ex)  func
4.IQueryable Queryable where        expression
5.IEnumerable Enumerable where.compile()    expression
6.IEnumerable Enumerable where      func

第一:16效率最高, func(从函数到函数)
第二:然后是4次之, expression(从表达式到表达式)
第三:25第三, 表达式编译(从表达式到函数)
第四:3是最慢的, 表达式代入函数(从函数到表达式)

通过 以上代码我们可以得知:
session接受func参数
Queryable接受expression参数
Enumerable接受func参数

版权所有,转载请注明文章出处 http://blog/csdn.net/cadenzasolo

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值