質問: 0).Trace().Select(x => x * 10); foreach (var item in query) { Console.WriteLine(item); } } public static IEnumerable Trace(this IEnumerable source) { foreach (var item in source) { Console.WriteLine(item); yield return item; } } } ``` ### 出力結果 ``` 2 20 4 40 6 60 8 80 ``` 私の予想では、 ``` 2 4 6 8 20 40 60 80 ``` でした。 なぜ、最後のforeachが、途中で割り込むような出力になるのでしょうか?
回答: 以下のようにすれば期待通りになるはずです。お試しください。 ``` public static IEnumerable Trace(this IEnumerable source) { foreach (var item in source) { Console.WriteLine(item); //yield return item; } return source; } ```