Visual Studio 2008 C#で開発効率アップ!:第1回 コード比較で理解するC#3.0の新機能(1)|gihyo.jp … 技術評論社
クエリー式の正体

クエリー式の正体は,シンタックスシュガーです。従って,クエリー式を使わずに記述することもできます。

以下の2つのコードを見比べてみてください。

var q = 
    from x in this.Collection
    where x.Age < 20
    orderby x.Name
    select new { Code = x.Code, Name = x.Name };
var q = 
    this.Collection
        .Where(x => x.Age < 20)
        .OrderBy(x => x.Name)
        .Select(x => new { Code = x.Code, Name = x.Name });

長いので改行されていますが,単にデリゲートを引数としたメソッドを書き連ねているだけです。各メソッドの引数では,ラムダ式が使われていることがわかります。

これに以前エントリーした以下の記事に関係している。
僕は木になりたい。。。 : 流れるようなインターフェース - livedoor Blog(ブログ)
流れるインタフェーススタイルはその中のメソッドにフューチャーしていて、 「1つの事を上手に行う為に、次の仕事の案内を戻り値のインタフェースによって伝えながら、対話的に行う。」 という事になる。さらに、案内は選択肢が多くても意味がない。
やってみればわかると思うけど、かなり設計が難しい。失敗すると間違いなくカオスになるから、むやみにやらない事も大事だと思った。 仮に、近い将来このスタイルが流行ったとしても、開発プロジェクトとしてはあまり幸せじゃない結果をもたらす気がするなぁ。
上記エントリーを書いた時点で既に、C#3.0はあったわけだけど、 全然知らなかった。
これ、何に驚いているかというと、言語に組み込んでしまうという所。
盲点だった。
開発効率を最優先している.NETらしいし、 実装が複雑になってしまうデメリットを、始めから言語に組み込むことで 一気にメリットにしてしまった。
シンタックスシュガーを作ってDSL風(というか完全なDSLだよね)にしてしまった当たりはもう脱帽。
考えてみれば、getter setterをプロパティという言語仕様に押し込んだのも.NETだったし、この手のやり口には驚くばかり
いつもワクワクさせてくれます。