【C#入門】Whereの使い方を解説【LINQ】


C#のWhereの使い方が分からない…

教えてください!


C#を学んでいるけど…

Whereの使い方が分からない

このような疑問を持っていませんか?

この記事では、LINQのひとつである『Where』について現役エンジニアが分かりやすく解説します。

時短でC#を学びたい方は、プログラミングスクールを受講しましょう!

Tech Academy

  • 受講者数No.1のプログラミングスクール
  • 通過率10%の選考に合格した優秀な講師
  • カリキュラムを閲覧制限なし
  • コースの種類が豊富
  • オンラインで完結
  • 無料体験あり
  • 無料カウンセリングあり
  • 学割あり

\ 公式サイトはこちら /

Tech Academy 公式サイト

まだ、C#の開発環境構築が出来ていない方はこちらを参考にしてください。

Whereの使い方

Whereの使い方を解説する前に、Whereで何が出来るのかを把握しておきましょう。

Where = 抽出

このような考え方で問題ありません。Whereを使用すると配列などのデータのまとまりから、条件を満たす(真)値を抽出できます

それでは、実際のコードを用いながらWhereの使い方を解説していきます。

まずは、Whereの使い方から説明します。Whereを使って抽出するときには以下のように記述します。

配列.Where(要素 => 抽出条件);

次に以下のデータをイメージしてください。

名前点数
Aさん100
Bさん50
Cさん40
Dさん80
Eさん70
Fさん60

合格点が60点以上として、合格者を見つけ出したいです。

そこで、Whereを使用して合格者を抽出します。以下がサンプルコードです。

using System;
using System.Collections.Generic;
using System.Linq;

internal class SampleBase
{
    //テスト結果の構造体を定義
    struct TestResult
    {
        //生徒の名前
        public string Name { get; set; }
        //テストの点数
        public int Score { get; set; }
    }

    static void Main()
    {
        //テスト結果を構造体として宣言
        List<TestResult> results = new List<TestResult>()
                    {
                        new TestResult(){Name = "Aさん", Score = 100},
                        new TestResult(){Name = "Bさん", Score = 50},
                        new TestResult(){Name = "Cさん", Score = 40},
                        new TestResult(){Name = "Dさん", Score = 80},
                        new TestResult(){Name = "Eさん", Score = 70},
                        new TestResult(){Name = "Fさん", Score = 60},
                    };

        //合格判定(点数が60点以上)
        var SuccessfulCandidate = results.Where(r => r.Score >= 60);

        //合格者(SuccessfulCandidate)を1人ずつ出力
        foreach (var result in SuccessfulCandidate)
        {
            //合格者の名前を出力
            Console.WriteLine(result.Name);
        }
    }
}

サンプルコードを実行した際の出力結果は、以下のようになります。

Aさん
Dさん
Eさん
Fさん

注目していただきたいのは、Whereを使っている30行目です。

まず、Whereを使うと1行で完結することに気づきましたか?これをfor文などのループ処理で行うと要素数回繰り返す必要があります。これだけでもWhereが便利であることが分かると思います。

配列.Where(要素 => 抽出条件);

これを基にサンプルコードを解説すると、「collection = results」、「要素 = r」、「抽出条件 = r.Score >= 60」となります。

つまり、データ(results)要素(r)点数(Score)60点以上(>= 60)ということです。

このようにして、C#ではWhereを使用することで、コードを簡潔に書くことが出来ます。

【まとめ】Whereはデータから特定の要素を抽出できる

Whereの使い方は理解できましたか?

まとめ

  • Where = 抽出
  • 配列.Where(要素 => 抽出条件);

この記事では、C#のWhereの使い方について紹介しました。

今後も一緒に学んでいきましょう!

最後までお読みいただき、ありがとうございました!

Tech Academy

  • 受講者数No.1のプログラミングスクール
  • 通過率10%の選考に合格した優秀な講師
  • カリキュラムを閲覧制限なし
  • コースの種類が豊富
  • オンラインで完結
  • 無料体験あり
  • 無料カウンセリングあり
  • 学割あり

\ 公式サイトはこちら /

Tech Academy 公式サイト