Linq中延迟执行的问题

我刚学linq,遇到点问题,希望高手解答。下面是我用linqpad中的例子的疑问。

IEnumerable<char> query = "期望中的结果";


query = query.Where (c => c != 'a');

query = query.Where (c => c != 'e');

query = query.Where (c => c != 'i');

query = query.Where (c => c != 'o');

query = query.Where (c => c != 'u');


new string (query.ToArray()).Dump ("所有元音都被过滤.");



query = "不是期望的结果";


foreach (char vowel in "aeiou")

    query = query.Where (c => c != vowel);

  

new string (query.ToArray()).Dump ("只有u被过滤了");

 不知道延迟查询是怎么回事,我知道ToList()可以取消延迟查询。而且在foreach里添加一个变量替换vowel也可以和第一个显示的一样,这是为什么呢?不清楚究竟为什么两个结果不一样?坐等高手!

潇潇雨雨
浏览 337回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP