.net column
.NET開発者のためのブログメディア

【LINQのメソッド紹介その3】Whereで条件に合うデータを取得する

 
【LINQのメソッド紹介その3】Whereで条件に合うデータを取得する

LINQにおいて、Selectメソッドは繰り返し処理のコードをきれいに書けるということを説明しました。Whereメソッドを併用することで、条件分岐をさせることが可能になります。これによりSelectの次にWhereを使用することで条件を絞ることができます。

PG
WhereメソッドでSelectメソッドの条件を付けることができるんですね。
PM
そうです。これでSelectメソッドがより便利になりますよ。早速使い方を見ていきましょう。

Whereメソッドでできること

Whereメソッドは、コレクションクラス(いわゆる配列)を走査する際のフィルタリングをすることが出来ます。これにより、Selectメソッドと組み合わせることで特定の条件を満たす要素に対する処理を行うことが可能です。
Selectメソッドと同じく使用する機会が多い汎用メソッドなので、LINQを使いこなす上ではマスターしておきたいメソッドの一つです。

Whereメソッドのサンプルコード

Whereメソッドのコーディング例を紹介していきます。ここではSelectメソッドのコーディング例になりますが、他の併用可能なメソッドでも記述は同様です。

実行結果

このコードでは、Whereメソッドで対象となる要素(ここでは5より上の数値)に対してSelectメソッドで平方数(x*x)として出力しています。

実行結果

このコードでは、指定した複数の条件を満たすコレクション要素に対して、Selectメソッドで処理を行っています。

実行結果

このコードでは、指定した条件のうち、どちらかを満たす要素に対してSelectメソッドで処理を行っています。

Whereメソッドは省略できる

Whereメソッドは使用頻度が高い汎用メソッドですが、Whereメソッドを使わなくても条件付けができる例も存在します。

実行結果

複数の条件のうち、どちらかを満たす場合において、その数を数えるCountメソッドを使用する場合です。こちらは正常に動作しており問題ありませんが、Countメソッドにおいて条件指定することができるので、以下のように書き換えることができます。

実行結果

このように、メソッドの引数として直接フィルター条件を入れられるメソッドに対しては、Whereメソッドを使う必要はありません。

PG
Whereメソッドのおかげでコレクションクラスの扱いやすさが段違いですね。
PM
そうですね。でも汎用性が高い反面、例に挙げた通り使わなくてもいいパターンも知っておくのが良いでしょう。

Whereメソッドは便利な反面無駄もできやすい

Whereメソッドはとても便利で使いやすいため、LINQを使いこなすために覚えておきたいものです。ただし、無駄なコーディング(動作上は問題なし)になってしまうこともしばしばあるため、本当の意味で使いこなすためには少しでもメソッドの性質を理解し、コーディングを行う必要があります。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags