C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のListで特定の要素を検索する方法|Find()メソッドの使い方を解説

C#では、List(リスト)の中から特定の条件に一致する要素を簡単に検索できます。本記事では、Find()メソッドとラムダ式を組み合わせて、リスト内から目的の要素を取得する方法をわかりやすく解説します。

検索対象となるリストを用意する

まず、検索の対象となる整数型のリストを作成します。

List<int> myList = new List<int>() {
    5,
    10,
    17,
    19,
    23,
    33
};

Find()メソッドで条件に合う要素を取得する

ここでは、「2で割り切れる要素」を検索するケースを想定します。このような条件指定には、Find()メソッドが便利です。

int val = myList.Find(item => item % 2 == 0);

Find()メソッドは、引数に渡した条件(述語)を満たす最初の1件を返します。上記のコードでは、ラムダ式 item => item % 2 == 0 によって「偶数であるかどうか」を判定しています。

なお、どの要素も条件を満たさなかった場合は、値型であれば既定値(intの場合は 0)、参照型であれば null が返される点に注意してください。

完全なサンプルコード

以下に、一連の処理をまとめた完全なコードを示します。

Example

using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
    static void Main() {
        List<int> myList = new List<int>() {
            5,
            10,
            17,
            19,
            23,
            33
        };
        Console.WriteLine("List: ");
        foreach(int i in myList) {
            Console.WriteLine(i);
        }
        int val = myList.Find(item => item % 2 == 0);
        Console.WriteLine("2で割り切れる最初の要素: " + val);
    }
}

Output(実行結果)

List:
5
10
17
19
23
33
2で割り切れる最初の要素: 10

リストの先頭から順に判定され、最初に見つかった偶数「10」が出力されていることが確認できます。

ポイントまとめ

  • Find()は、条件に一致する最初の要素のみを返す。
  • 検索条件はラムダ式で簡潔に記述できる。
  • 該当する要素が存在しない場合、値型なら既定値、参照型なら null が返る。
  • 条件に一致するすべての要素を取得したい場合は、FindAll()メソッドを使用する。

リストからの要素検索は実務でも頻出の処理です。Find()メソッドの挙動をしっかり理解しておくと、コードの可読性と効率が大きく向上します。

  1. AndroidのLinkedListで中間の要素を取得する方法を解説

    このチュートリアルでは、Androidアプリでリンクリスト(LinkedList)の中間要素を取得する方法を解説します。手順1:新規プロジェクトの作成Android Studioで新しいプロジェクトを作成します。メニューから「File ⇒ New Project」を選択し、必要な項目をすべて入力してプロジェクトを作成してください。手順2:レイアウトファイルの編集res/layout/activity_main.xmlに以下のコードを追加します。<?xml version="1.0" encoding="utf-8"?> <LinearL

  2. Redis LSETコマンドの使い方 – リストの指定インデックスに要素を設定する方法

    このチュートリアルでは、Redisデータストアに保存されたリスト型の値に対して、新しい要素を設定する方法を解説します。そのために使用するのが、RedisのLSETコマンドです。 LSETコマンドとは LSETコマンドは、キーに保存されているリスト型の値に対して、指定したインデックスの位置にある要素を新しい値で上書きします。 インデックスはゼロベースで扱われます。つまり、「0」が先頭の要素、「1」が2番目の要素というように対応しています。また、負の数を使うことも可能で、「-1」は末尾の要素、「-2」は末尾から2番目の要素を意味します。 なお、範囲外のインデックスを指定してLSETコマンドを実行す