Linqの各メソッドは foreach の連続で成り立っていることが今までで分かったと思います。
Linqはすごい? その2で見た、cal3はforeachが4個ということになり、cal2のforeachが1個より4倍以上時間がかかります。
Exceptionを出すコードとか、List<>のほうが便利な機能があるので一度List<>にしてみるとか、ある局面で使うには余分なオーバーヘッドもあります。
それを踏まえてLinqと付き合っていかなければいけないことになります。
さてLinqはすごいと信じ込まされているあなた以下のプログラムを見てください。
以下のLinq部分はメソッド何個(何回のforeach)になるでしょうか?
出力されるNoはどの順でしょうか?
実際の出力ではなく 「10回(1,12,13,15,17)」 みたいにお答えください。
過去のシリーズ
Linqはすごい? その3
Linqはすごい? その2
Linqはすごい? その1
var al = new[] {
new {Name="とっちゃん",Prefecture="1東京",No=13},
new {Name="むたぐちさん",Prefecture="2大阪",No=17},
new {Name="επιστημηさん",Prefecture="1東京",No=12},
new {Name="中さん",Prefecture="2大阪",No=1},
new {Name="えムナウ",Prefecture="1東京",No=15}
};
{
var accounts = from a
in al
where a.No > 10
orderby a.No
descending
group a
by a.Prefecture
into accPref
orderby accPref.Key
select accPref;
foreach (var accgroup in accounts)
foreach (var account in accgroup)
Console.WriteLine(account.No.ToString() + "," + account.Name + "(" + account.Prefecture + ")");
}