LinqのWhereでの列挙中に、列挙を中断できる
IEnumerableを返すためにyield returnを使うコードを、最近になって初めて実践的に使った。するとあることに気付いた。次のコード、yieldに慣れていないとどう動くか予想しづらいのではないか。
int count = 0; var array = new object[100]; foreach (var obj in array.Where((o) => { count++; return true; })) { Console.WriteLine(count); if (count >= 10) { break; } }
結果は、1から10までがコンソールに出力される。11以上は出力されない。つまり、IEnumerable
私はLinqを真面目に勉強したことがない*2ので、同様のことをもっとスマートにやる方法があるかもしれない。スマートなやり方をご存じの方、教えてもらえませんか?