首页 新闻 会员 周边 捐助

关于linq 这段没看懂,谁通俗的讲解一下

0
悬赏园豆:10 [已解决问题] 解决于 2018-03-22 13:39
IEnumerable<char> 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.

结果中只有字母u被过滤了,咋一看,有没有吃一惊呢!但只要仔细一想就能知道原因:因为vowel定义在循环之外,所以每个lambda表达式都捕获了同一变量。当我们的query执行时,vowel的值是什么呢?不正是被过滤的字母u嘛。

问题补充:

上面是原文,我有点搞不懂为什么只有u被过滤了

猝不及防的主页 猝不及防 | 老鸟四级 | 园豆:2878
提问于:2018-03-21 20:08
< >
分享
最佳答案
0

自己做的人都没有理解,答案都是错的。。当然搞不懂了。最后的结果是: Hw r y,frnd. 

收获园豆:4
ndgail | 初学一级 |园豆:148 | 2018-03-22 09:38
其他回答(2)
0

表述的什么问题!都被你惊了——还以为就只有u被过滤。

当我们的query执行时,vowel的值是什么呢?——每个字符。

收获园豆:3
花飘水流兮 | 园豆:13617 (专家六级) | 2018-03-21 20:37

.....这个是原文,原文就是说只有u被过滤了,我是搞不懂为什么只有u被过滤了

支持(0) 反对(0) 猝不及防 | 园豆:2878 (老鸟四级) | 2018-03-22 08:39

@猝不及防: 有发文的功夫都不自己去试一下还搞什么技术。

支持(0) 反对(0) 花飘水流兮 | 园豆:13617 (专家六级) | 2018-03-22 12:44

@花飘水流兮: 昨天晚上太晚了,而且我看的也是博客园的教程系列,所以没试,认为是对的

支持(0) 反对(0) 猝不及防 | 园豆:2878 (老鸟四级) | 2018-03-22 13:36
0

答案是错误的,aeiou应该都被过滤掉了

收获园豆:3
龙葛格 | 园豆:782 (小虾三级) | 2018-03-22 10:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册