博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码演示 Linq 延迟执行(Deferred Execution) 带来的问题
阅读量:4476 次
发布时间:2019-06-08

本文共 980 字,大约阅读时间需要 3 分钟。

直接贴代码:

static void Main(string[] args)         {
IEnumerable
query = "How are you, friend."; //我们的目的是去除元音字母 foreach (char vowel in "aeiou") {
query = query.Where(c => c != vowel); } foreach (char c in query) {
Console.Write(c); //结果:How are yo, friend. } Console.WriteLine(); //结果中只有字母u被过滤了,咋一看,有没有吃一惊呢! //但只要仔细一想就能知道原因:因为vowel定义在循环之外,所以每个lambda表达式都捕获了同一变量。 //当我们的query执行时,vowel的值是什么呢?不正是被过滤的字母u嘛。 //要解决这个问题,我们只需把循环变量赋值给一个内部变量即可, //如下面的temp变量作用域只是当前的lambda表达式。 foreach (char vowel in "aeiou") {
char temp = vowel; query = query.Where(c => c != temp); } foreach (char c in query) {
Console.Write(c); //结果:Hw r y, frnd. } Console.WriteLine(); }

 

谢谢浏览!

转载于:https://www.cnblogs.com/Music/archive/2011/12/15/a-problem-for-linq-deferred-execution.html

你可能感兴趣的文章
情人节——爱心代码
查看>>
Java冒泡排序
查看>>
FastDFS 双tracker负载均衡 及多组存储配置
查看>>
Windows10 MySQL8.0.12 非安装版配置启动
查看>>
火狐的调试利器-----Firebug
查看>>
浏览器的页面渲染
查看>>
PHP 配置文件中open_basedir选项作用
查看>>
Linux下redis的安装
查看>>
bzoj 1208 宠物收养所
查看>>
算法笔记
查看>>
javascript基础、语法
查看>>
HDU 1301(MST)
查看>>
[LeetCode] SUM4
查看>>
安防摄像机手机直播方案介绍
查看>>
安防摄像头云端录像计划快捷配置-LiveNVR Onvif/RTSP流媒体服务
查看>>
包装类
查看>>
[转载]Spring学习4-面向切面(AOP)之aspectj注解方式
查看>>
201621123047 《Java程序设计》第10周学习总结
查看>>
no crontab for root 解决方案
查看>>
IAP 协议
查看>>