C#中IQueryable和IEnumerable的区别

  1. IQueryable接口是继承自IEnumerable的接口
  2. IQueryable中有表达式树, 这可以看作是它的一个优势。所以,使用IQueryable操作时,比如对数据的过滤,排序等操作, 这些都会先缓存到表达式树中。 当对数据库操作真正发生时,它才会将表达式树执行来获取数据。这也就是说,比如选择top 2两行数据, 它会先在表达式树中缓存这个过滤取top2的操作。待到操作数据库时,它就会在数据库中筛选top 2数据。 => IQueryable 有延时加载机制, 它直接从数据库中筛选数据.
  3.  IEnumerable, 它对数据进行操作时,和IQueryable不同,它会事先把所有的数据从数据库获取,放到内存中。然后,在内存中对这些数据进行筛选操作,包括过滤,排序等.  => IEnumerable 在内存中对数据进行筛选

总结:IQueryable只是构建表达式树,真正取数据的时候,再执行完整的SQL,IEnumerable直接通过第一个条件直接从数据库拿到数据放到内存,通过剩下的条件进行筛选。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便换个名字吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值