読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

LINQのメソッド構文、クエリ式の構文

C#

LINQってメソッド構文とクエリ式の構文の2つがあります。どっち使います?という話ですが個人的な見解として、メソッド構文がLINQの全機能にフルアクセスできるという点でメソッド構文を使用しています。 LINQのメソッド構文とクエリ式の構文の対応は以下のページにまとまっています。

Query Expression Syntax for Standard Query Operators

ちなみにクエリ式の構文のメリットとしては多段SelectManyが見やすいという点があります。

var a = from h in hoge
    from f in fuga
    from b in bar
    select new { h, f, b };

メソッド構文だとこういう感じになる。

var a = hoge.SelectMany(_ => fuga, (h, f) => new { h, f })
    .SelectMany(_ => bar, (hf, b) => new { hf.h, hf.f, b });

これの数がちょっと増えてくるとSelectManyのメソッド構文のほうがつらくなってきます。といっても、SelectManyを、超たくさん書くことって限られてるので、そんなに困ることはないです。

ということで、メソッド構文推しですよ!という話しでした。