LINQ 拡張メソッド一覧

スポンサーリンク

LINQが登場して10年以上が経過しましたが、未だに使えない開発者の方が大勢いらっしゃいます。(少なくとも私の周りには…)
そもそも、ラムダ式がよくわからない…。ラムダ式は使わないでください。という客先の開発者の方もいます。(年配の方が多いです。)
自分も数年前までは仕事でLINQを使う機会があまりなかったので「必要になったらその都度覚えればいいかな~」ぐらいに思っていましたが、ある日突然覚えようと思ってもなかなか覚えられません。よく使うWhereメソッドやSelectメソッドはそれなりに使えますが、LINQで何ができるのかがわかっていないと、LINQでできるのに別の方法で無駄なコードを書くことになってしまうこともあります。
そこで、LINQの拡張メソッドを少しずつまとめていくことにしました。

はじめに

LINQメソッドでは、配列やLIST<T>などのIEnumerable<T>インターフェイスを実装するオブジェクト等に対して「シーケンス」という用語が使用されますが、本記事では「コレクション」という用語を使用します。

遅延実行」と記載のあるメソッドは戻り値としてIEnumerable<T>型のオブジェクトを返しますが、メソッド呼び出し時点では実行(実体化)されません。戻り値のIEnumerable<T>型のオブジェクトに対してforeachで要素を読み出した時点や「即時実行」と記載のあるメソッドを呼び出した時点で実行されます。「即時実行」メソッドはIEnumerable<T>型から、別の型のオブジェクトを返します。

要素を取得する

Where

指定した条件に一致する要素を取得します。
遅延実行

実行結果として15, 20, 25, 30を返します。

Take

先頭から指定した個数の要素を返します。
遅延実行

実行結果として1, 2, 3を返します。

TakeWhile

先頭から指定した条件を満たす間の要素を返します。
遅延実行

実行結果として3, 2を返します。

Skip

指定した個数の要素を飛ばした残りの要素を返します。
遅延実行

実行結果として32, 5, 22, 7を返します。

SkipWhile

指定した条件を満たす間は要素を飛ばした残りの要素を返します。
遅延実行

実行結果として20, 3, 12を返します。

First

最初の要素を返します。
即時実行

実行結果としてquery1には6を返します。query2には3を返します。

FirstOrDefault

最初の要素を返します。要素がない場合は既定値(default<T>)を返します。
即時実行

実行結果としてquery1には0を返します。query2には7を返します。

Last

最後の要素を返します。
即時実行

実行結果としてquery1には25を返します。query2には4を返します。

LastOrDefault

最後の要素を返します。要素がない場合は既定値を返します。
即時実行

実行結果としてquery1には2を返します。query2には0を返します。

ElementAt

指定したインデックス位置にある要素を返します。
即時実行

実行結果としてeを返します。

ElementAtOrDefault

指定したインデックス位置にある要素を返します。要素がない場合は既定値を返します。
即時実行

実行結果として0を返します。

Single

唯一の要素を返します。要素が複数になる場合は例外をスローします。
即時実行

実行結果としてquery1は例外が発生します。query2は2を返します。

SingleOrDefault

唯一の要素を返します。要素がない場合は既定値を返します。
即時実行

実行結果として10を返します。

新しい要素のコレクションを作成(射影)

使用するクラスとオブジェクト

Select

新しいコレクションを作成します。
遅延実行

実行結果としてquery1は15, 17を返します。query2は30, 34を返します。
query3は匿名オブジェクトとして
{
Namae = “John”, Nenrei = 15
Namae = “Bob”, Nenrei = 17
}
を返します。
query4はToolsを返しますがIEnumerable<Tool>型が返るので、Toolを取り出すのに2つのループが必要です。(JohnとBobのそれぞれのToolsが返ります。)

SelectMany

Selectメソッドで2次元で返されるコレクションを1次元のコレクションで返します。(平坦化して返します。)
遅延実行

実行結果として”John’s Tool1″, “John’s Tool2”, “Bob’s Tool1”, “Bob’s Tool2″の4要素を返します。(queryに4要素が返ります。)

参考:Enumerable メソッド