Linq延时执行怎么理解
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"Linq延时执行怎么理解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Linq延时执行怎么理解"吧!Linq的大多数查询运算符的一个重要
千家信息网最后更新 2025年11月07日Linq延时执行怎么理解
本篇内容主要讲解"Linq延时执行怎么理解",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Linq延时执行怎么理解"吧!
Linq的大多数查询运算符的一个重要特性就是,他们并不是在构建的时候就立即执行,而是在枚举是执行,换句话说,当枚举变量调用MoveNext时执行。
在构建查询之后,另外插入到列表中的数字也会包含在结构中,因为直到foreach运行时此才回进行筛选或者是排序操作,称之为延时执行或延缓计算,所有标准查询运算符均为延时执行,但是有的运算符不支持延时执行的机制,而是立即执行,如Count 、ToAarry、toLookup等。
Linq延时执行还有一点不好的影响,如果查询的lambda表达式引用了局部变量,那么这些便来那个会受到外部便来那个语义的约束。
当在foreach循环中构建查询时,这就会成为一个陷阱,例如假定想要删除字符串中的所有元音字母。如下所示的虽然效率不高,但是能得到正确的结果:
IEnumberablequrey ="Not what you might expect"; queryquery =query.Where(c=>c!='a'); queryquery =query.Where(c=>c!='e'); queryquery =query.Where(c=>c!='i'); queryquery =query.Where(c=>c!='o'); queryquery =query.Where(c=>c!='u'); foreach(char c in query) Console.Write(c); //Nt wht y mght xpct
上面的代码是可以得到正确的结果,那么现在如果用foreach循环重写这段代码能否的道正确的结果:
IEnumerablequery ="Not what you might expect"; foreach(cha vowel in "aeiou") qwuer =query.Where(c=>c!=vowel); foreach(char c in query) Console.Write(c); //Not what yo might expect //只删除了'u',这是因为编译器将foreach循环翻译成如下的代码: IEnumerable vowels="aeiou"; Iemuberator rator=vowels.GetEnumerator(); char vowel; while(rator.MoveNext()) { vowel =rator.Current; queryquery =query.Where(c=>c!=vowel); }
因为vowel变量时循环外部声明的,同一个变量重复声明更新,所以每个lambda表达式获取的是同样的vowel.之后枚举查询时,所有的lambda表达式引用了这个变量的当前值,即'u'。为了解决这个问题,必须将循环变量赋值被另一再循环代码块内声明的变量:
IEnumberablequrey ="Not what you might expect"; foreach( char vowel in "aeiou") { char temp =vowel; queryquery =query.Where(c=>c!=temp); }
到此,相信大家对"Linq延时执行怎么理解"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
变量
查询
循环
代码
结果
表达式
运算符
运算
内容
是在
学习
实用
更深
重要
不好
元音
兴趣
字母
字符
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
dns服务器
河南交友软件开发靠谱吗
未来10年网络安全影响力
为什么服务器都是在晚上死机
数据库smi
服务器切换
网络安全题库最新
服务器安装管理流程
河南网络安全审计硬件商家
外包软件开发费未付款
腾讯灯塔数据库
天源迪科收件服务器
长城新媒体网络安全
电网网络技术岗是干什么工作的
政府机关的网络安全分析
在数据库中授予一个普通用户
什么是网络安全保障体系
金蝶客户端怎么共享服务器账套
网络安全主题案例分析
华为账号连不上服务器怎么回事
国际qq网络技术
怎么复制sql数据库格式
数据库审批工具
长沙软件开发培训机构哪个好
惠普服务器维修哪家好
正版直销软件开发
如何备份服务器系统及分区
属于敏捷软件开发方式的有
网络安全类股票有哪些内容
数据库那个字段类型