List<T> 和IQueryable<T>关键性的不同在哪?

1 篇文章 0 订阅
0 篇文章 0 订阅


虽然只是一个小问题, 但是在学习.NET的路上, 一定会遇到.
回想当时, 我在永X余集团驻点
Jerry对我提出了疑问
“List<T> 和IQueryable<T>关键性的不同在哪?”

我呆了一下
回忆起制作台湾外X部的网站的时候

=======3个月前=========

原本好好的New List 全部挂掉了
在Code完全没动的情况下...

仔细追查以后
发现是资料库汇入正式资料
捞1万笔资料捞不出来 因为超过List<T>的限制
一番尝试后, 改成了IQueryable<T>后就可行了

改完之后, 我向前辈询问
‘原来IQueryable<T>能存在记忆体的资料比List<T>还多,是不是这样?’

前辈高深莫测的回答“是的”

========回到现在========

‘IQueryable<T>比较吃效能,他能存的资源比较多。
我学着前辈,装做高深莫测。

但是他们关键性的不同在哪??


招唤Google大神, 得到了相关资料
http://www.chinaitlab.org/space-144-do-blog-id-15258.html

发现原来, 真的不一样

IQueryable<T>是在foreach的时候,才向资料库发送查询
假设我在View抓资料的当下, 他才向资料库发送请求

好处 不占记忆体   坏处 向资料库多发一次请求


List<T>则是立即发送请求把资料存入记忆体
当我在Controller使用时它就把资料存起来了

好处 List为null的情况

当某些情况下, 有两个资料库, 一次只能抓一个的时候
会先把资料存入List<T>, 然后再抓第二次进行比对

List<T>最好是在查询语法下完之后在使用, 而资料笔数在百笔~千笔之内是较为理想的
方可使用最少的资源.


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值