LINQ 为什么要延迟执行?
代言
代言 2016-11-07 15:05:40
[MySQL讨论组]
int[] scores = { 10, 90, 100, 30, 70, 29, 45 }; 
var highScoresQuery = from score in scores
where score > 80
orderby score descending
select score;

上面这段代码会延迟执行,如果使用聚合函数,如:.Count() 就会立即执行。为什么要这么做,好处是什么? 为什么 Count() 不采用延迟执行呢?

代言
代言

全部回复(1)
大家讲道理

linq相当于一个查询语句的封装,可以理解为是一个“sql语句的构造器”。定义或者修改一个linq的语句,其实就是在构造器上调整构造参数。


ToList、Count之类的函数,可以想象它的操作对象是查询结果,而不是一个查询语句本身。因此,对linq这个构造器执行结果类函数时,构造器就会根据已有的构造参数生成最终的查询语句、执行该语句、返回查询结果,然后才会将这个查询结果交付结果类函数中使用。


在这整个过程中,从开始定义linq,到生成执行最终查询语句并返回结果的这段时间(或者代码空间),就是你说的“延迟”。


linq的优点在于代码及代码逻辑的简洁明快。另外还附带了Lambda表达式的优(gao)雅(bi)性(ge)、推迟sql遍历查询这种高消耗操作带来的总体性能优化等优点。(但需要注意的是,linq本身相对与原生查询代码肯定是性能下降的)


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号