【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メソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    【C#入門】IndexOfで文字列やList、配列を検索する方法
    更新日 : 2019年5月7日

    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メソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    【C#入門】Containsで値が含まれるか調べる方法(文字列/配列/List)
    更新日 : 2019年4月4日

    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メソッドの詳しい使い方は次の記事で詳しく解説しているのでぜひ確認してください!

    【C#入門】Listの要素を検索するFindの使い方(FindAll/FindIndex)
    更新日 : 2019年4月11日

    まとめ

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

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

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

    LINEで送る
    Pocket

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    中沢 丈

    中沢 丈

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

    連絡先はこちらです。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説