C#のWhereの使い方が分からない…
教えてください!
C#を学んでいるけど…
「Whereの使い方が分からない」
このような疑問を持っていませんか?
この記事では、LINQのひとつである『Where』について現役エンジニアが分かりやすく解説します。
時短でC#を学びたい方は、プログラミングスクールを受講しましょう!
まだ、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の使い方は理解できましたか?
この記事では、C#のWhereの使い方について紹介しました。
今後も一緒に学んでいきましょう!
最後までお読みいただき、ありがとうございました!