【C#入門】Listの要素を検索する方法総まとめ(Find/IndexOf/Contains)

こんにちは!エンジニアの中沢です。

C#にはListの要素を検索して目的の要素を探す方法がいくつかあります。

条件に一致する要素のインデックスを取得するには「IndexOfメソッド」を使い、要素が含まれているどうかを判定するには「Contains」メソッドを使います。また、より細かい条件で要素を検索するには「Findメソッド」を使います。

この記事では、

  • Listの要素の検索とは
  • IndexOfで検索した要素のインデックスを取得する方法
  • Containsで値が含まれているかを判定する方法
  • という基本的な内容から、

  • Findで条件を指定して要素を検索する方法
  • などの応用的な使い方に関しても解説していきます。今回はこれらの方法を覚えるために、Listの要素を検索するさまざまな使い方をわかりやすく解説します!

    目次

    Listの要素の検索とは

    C#ではいろいろな方法でListを検索することができます。

    List内に措定した要素が存在するかどうかを「true」、「false」の判定で調べる方法や、インデックス番号の値を取得して調べる方法があります。

    また、List内の「偶数の値を取得したい」などの条件を指定して検索することもできます。

    IndexOfで検索した要素のインデックスを取得する方法

    ここでは、IndexOfメソッドを使って検索した要素が存在するインデックス番号を取得する方法を解説します。

    IndexOfメソッドは指定した要素が見つかった場合に「0」から始まるインデックス番号を返します。見つからなかった場合には「-1」を返します。IndexOfメソッドの使い方を次のプログラムで確認してみましょう。

    using System;
    using System.Collections.Generic;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string[] src = {"Tokyo", "Osaka", "Nagoya"};
          var list = new List<string>();
          list.AddRange(src);
          string item = "Osaka";
          
          int num = list.IndexOf(item) + 1;
          
          if(num > 0) {
            Console.WriteLine("{0}は{1}番目にあります", item, num);  
          } else {
            Console.WriteLine("{0}は見つかりませんでした", item);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    Osakaは2番目にあります

    このプログラムでは、IndexOfメソッドを使って指定した要素のインデックス番号を取得して表示しています。

    IndexOfメソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    Containsで値が含まれるか判定する方法

    ここでは、Containsメソッドを使って検索した要素が含まれているかどうかを判定する方法を解説します。

    Containsメソッドは指定した要素が見つかった場合に「true」を返します。見つからなかった場合には「false」を返します。Containsメソッドの使い方を次のプログラムで確認してみましょう。

    using System;
    using System.Collections.Generic;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string[] src = {"Tokyo", "Osaka", "Nagoya"};
          var list = new List<string>();
          list.AddRange(src);
          string item = "Osaka";
          
          if(list.Contains(item)) {
            Console.WriteLine("{0}が見つかりました", item);  
          } else {
            Console.WriteLine("{0}は見つかりませんでした", item);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    Osakaが見つかりました

    このプログラムでは、Containsメソッドを使って指定した要素が存在するかどうかを判定して表示しています。

    Containsメソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    Findで条件を指定して要素を検索する方法

    ここでは、Findメソッドを使って条件を指定して要素を検索する方法を解説します。

    Findメソッドは要素を先頭から検索して、初めに見つかった一つの要素を返します。Findメソッドの使い方を次のプログラムで確認してみましょう。

    using System;
    using System.Collections.Generic;
    
    namespace Sample
    {
        class Program
        {
            static void Main(string[] args)
            {
                var list = new List<int> { 1, 2, 3, 7, 8, 9 };
    
                int result = list.Find(n => n % 2 == 0);
    
                Console.WriteLine(result);
                Console.ReadKey();
            }
        }
    }

    実行結果:

    2

    このプログラムでは、Findメソッドを使ってListの中から偶数の値を検索して、最初に見つかった「2」を表示しています。

    Findメソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    まとめ

    いかがでしたか?今回はListの要素を検索する様々な方法を解説しました。

    要素が存在するかどうかの判定やインデックス番号の取得など、状況に応じて使い分けてくださいね。

    もし、Listの要素を検索する方法を忘れてしまったらこの記事を確認してください!

    この記事を書いた人

    フリーランスエンジニア。
    システム開発からコンテンツ作成まで幅広く対応します。

    連絡先はこちらです。
    ntakeshi@sejuku.net

    目次