C#でLINQのWhere句を使いこなす!複数条件を活用したデータフィルタリングテクニック

C#のLINQ(Language Integrated Query)は、データ操作を効率化するために欠かせない機能です。
特にWhere句を使ったフィルタリングは、日々の開発業務において非常に重要な役割を果たします。
しかし、複数の条件を持つフィルタリングをどのように行うかで悩んでいるエンジニアも多いのではないでしょうか。

本記事では、複数条件を使ったWhere句の活用方法を深堀りし、
特に条件分岐や動的な条件設定、複数の項目を選択するテクニックを具体的に解説します。
この記事を読むことで、LINQのWhere句を自在に操り、効率的なコーディングスキルを身に付けることができるでしょう。

記事のポイント

  • LINQの基本的な使い方
  • 複数条件を使ったWhere句の活用
  • 動的な条件設定の方法
  • 複数項目の選択にラムダ式を活用する
目次

【C#】LINQのWhere句で複数条件を使ったフィルタリング

Listを使ったLINQのWhere句で複数条件を指定する方法

C#でデータをフィルタリングする際、Listに対して複数条件を使ってフィルタリングすることは非常に有効です。例えば、Listに対してWhere句を使い、複数の条件を同時に満たすアイテムを抽出することができます。

class Product
{
    public string Name { get; set; }
    public string Category { get; set; }
    public int Price { get; set; }
}

var products = new List<Product>{
    new Product { Name = "Apple", Category = "Fruit", Price = 100 },
    new Product { Name = "Banana", Category = "Fruit", Price = 50 },
    new Product { Name = "Carrot", Category = "Vegetable", Price = 80 }
};

var filteredProducts = products.Where(p => p.Category == "Fruit" && p.Price > 80).ToList();

この例では、カテゴリが「Fruit」であり、かつ価格が80を超える商品だけをフィルタリングしています。
Where句を使うことで、簡潔に条件を指定してリストを操作できます。

LINQのWhere句で複数条件をOR条件で扱う方法

複数条件を使用する際、OR条件でフィルタリングしたい場合もあります。
&&の代わりに||を使うことで、どちらかの条件を満たすデータを取得可能です。

var filteredProducts = products.Where(p => p.Category == "Fruit" || p.Price < 60).ToList();

このコードでは、カテゴリが「Fruit」であるか価格が60未満の商品を取得します。
OR条件を使用することで、より柔軟なフィルタリングが可能です。

LINQで動的にWhere句の条件を変更する方法

実際のアプリケーションでは、動的に条件を変える必要がある場面が多いでしょう。
LINQでは、条件を後から追加することが可能です。
これを実現するには、条件を組み合わせるためのFuncやラムダ式を活用します。

bool applyCategoryFilter = true;  // カテゴリフィルタを有効にする場合
bool applyPriceFilter = false;    // 価格フィルタを無効にする場合

Func<Product, bool> dynamicCondition = p => true;

if (applyCategoryFilter)
    dynamicCondition = p => p.Category == "Fruit";
if (applyPriceFilter)
    dynamicCondition = p => p.Price > 50;

var filteredProducts = products.Where(dynamicCondition).ToList();

このコードでは、条件が動的に変わる状況に対応し、最終的なWhere句に適用するフィルタ条件を決定します。

【C#】LINQの複数項目を選択するラムダ式の活用法

LINQで複数項目を同時に選択する方法

LINQのSelectを使って複数の項目を一度に取得することが可能です。
これにより、オブジェクトの特定のプロパティだけを取得することができます。

var productInfo = products.Select(p => new { p.Name, p.Price }).ToList();

この例では、商品名と価格だけを抽出しています。
Select句を使うことで、複数の項目を簡単に取り出すことができます。
また、複雑なオブジェクトの処理を簡素化できるため、データ操作の効率が向上します。

複数項目を選択しつつWhere句と組み合わせる

Where句とSelect句を組み合わせることで、条件付きで複数項目を取得することができます。
例えば、特定の条件に合致したアイテムの一部プロパティのみを取得する場合、
以下のようにコードを書けます。

var expensiveFruits = products.Where(p => p.Price > 50 && p.Category == "Fruit")
                              .Select(p => new { p.Name, p.Price }).ToList();

ここでは、50円より高いフルーツに限定して、商品名と価格だけを取得しています。
このようにWhere句とSelect句を併用することで、フィルタリングと選択を同時に行うことができます。

【C#】LINQのWhere句を使った複数条件処理のまとめ

複数条件を使ったLINQのWhere句は、データをフィルタリングする強力なツールです。
ANDやOR条件を適用することで、複雑な条件も簡潔に記述できます。
また、動的な条件設定やラムダ式を活用して、柔軟にデータを操作することが可能です。
C#開発においては、これらのテクニックを使いこなすことで、より効率的で読みやすいコードを作成できるでしょう。

他にもC#の様々なテクニックの紹介やエンジニアに役立つ情報を発信していますので興味のある方は以下のリンクからどうぞ!

C#やエンジニアに役立つ情報はこちら

収入を上げたいエンジニアはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次