IQueryable,IEnumerable,List

本文对比了IQueryable、IEnumerable和IList三种集合类型的特点及使用场景。重点分析了它们之间的性能差异,尤其在数据库交互过程中的表现不同。指出IQueryable和IEnumerable采用延时执行策略,适合大量数据操作;而IList采用即时执行策略,适用于较小的数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.IQueryable和IEnumerable都是延时执行(Deferred Execution)的,而IList是即时执行(Eager Execution)
2.IQueryable和IEnumerable在每次执行时都必须连接数据库读取,而IList读取一次后,以后各次都不需连接数据库。前两者很容易造成重复读取,性能低下,并且可能引发数据不一致性
3.IQueryable和IEnumerable的区别:IEnumberalb使用的是LINQ to Object方式,它会将AsEnumerable()时对应的所有记录都先加载到内存,然后在此基础上再执行后来的Query。所以上述TestIEnumerable例子中执行的SQL是"select top(5) ...",然后在内存中选择前两条记录返回。


example:(model1为iqeuryble或ienumerable或list)
model model1 = model.where(...) model2 = model1.where(..)
IQueryble返回是是委托 延迟会推迟到最后 即 循环获取每个model2里的元素时读到内存

IEnumerable返回的是委托 但仅截止到该返回值 即 model2时读到内存

list 返回的是内存里的值,不延迟
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值