http://builder.japan.zdnet.com/member/u518773/blog/2009/02/25/entry_27020655/
LINQ練習 #1 「LINQ to Object 基本」より
このサンプルコードを
素直に LINQ にする
と以下になると思うんだけどなー
var q =
from i in Enumerable.Range(0, 365 + 1)
where DateTime.Today.AddDays(i).DayOfWeek == DayOfWeek.Sunday
select DateTime.Today.AddDays(i);
foreach (var x in q) Console.WriteLine(x.ToShortDateString());
AddDays(i) メソッドは低負荷ではあるけど、実行を 1 回にまとめるために、最初に日付を得ておく方が良い気がする。
そうすると LINQ 使用前のコードも以下のようにした方が良い気がする。
for (int i = 0; i <= 365; i++){
DateTime d = DateTime.Today.AddDays(i);
if (d.DayOfWeek == DayOfWeek.Sunday) {
Console.WriteLine(d.ToShortDateString());
}
}
で、このサンプルコードを素直に LINQ にすると以下になるかな。
var q =
from i in Enumerable.Range(0, 365 + 1)
let d = DateTime.Today.AddDays(i)
where d.DayOfWeek == DayOfWeek.Sunday
select d;
foreach (var x in q) Console.WriteLine(x.ToShortDateString());
でも僕が同じ要件に当たったら、リンク先のコメントのように from を二重にする書き方が好みだな。