C#のリストに要素を含むか検索する3つの方法!

C# C#

C#のリストに要素を含むか検索する方法について書いています。
リストに要素を含むか確認するときには、下記のメソッドをリストから呼び出すと良いです。

・Containsメソッド
・IndexOfメソッド
・LastIndexOfメソッド

載せているコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。

Containsメソッドを使う

リストからContainsメソッドを呼び出すことで、要素を含んでいるか確認できます。
例えば、下記のように使うことができます。

List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};

bool result = fruits.Contains("orange");
if (result) {
    Console.WriteLine("orangeを含みます!");
}

最初にfruits変数に、4つの文字列でリストを作りました。

次の処理で、リストからContainsメソッドを呼び出して含まれているか確認しています。
Containsメソッドに引数として渡しているのは、含んでいるか確認したい値です。

含んでいるときにはTrueが返ってきて、含んでいないときはFalseが返ってきます。
今回は「orange」が含まれているか確認して、含まれているのでTrueが返ってきます。

result変数で結果を受け取って、if文で含んでいるか確認しています。
含まれているので、「orangeを含みます!」を出力して処理が終わります。

IndexOfメソッドを使う

リストからIndexOfメソッドを呼び出すことでも、要素を含んでいるか確認することができます。
IndexOfメソッドは要素の要素番号を返してくれます。

例えば、下記のように使います。

List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};

int index = fruits.IndexOf("banana");
if (index > 0) {
    Console.WriteLine("bananaを含みます!");
}

最初にfruits変数に、4つの文字列でリストを作りました。

次の処理で、リストからIndexOfメソッドを呼び出して含まれているか確認しています。
IndexOfメソッドに引数として渡しているのは、含んでいるか確認したい値です。

含んでいるときには要素番号が返ってきて、含んでないときには数値の「-1」が返ってきます。
そのため、「0」以上だったときには、含んでいることになります。

今回の「banana」は含まれているので、要素番号の「3」が返ってきます。
index変数で結果を受け取って、if文で含んでいるか確認しています。

プログラムを実行すると、「bananaを含みます!」を出力して、処理が終了します。

複数の重複する値があったときは?

リストに複数の要素があったときには、IndexOfメソッドを使うと、一番最初に見つかった要素番号を返してくれます。

List<string> fruits = new List<string>() {"apple", "banana", "grape", "banana", "orange", "banana"};

int index = fruits.IndexOf("banana");
if (index > 0) {
    Console.WriteLine("bananaを含みます!");
}

fruits変数に、6つの文字列でリストを作りました。
banana」の要素が3つ重複しています。

このときには、一番最初に見つかった位置の「1」が返ってきます。

LastIndexOfメソッドを使う

リストからLastIndexOfメソッドを使うことでも、要素を含んでいるか確認することができます。
LastIndexOfメソッドも、要素が含まれているときには要素番号が返ってきます。

例えば、下記のように使います。

List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana"};

int index = fruits.LastIndexOf("grape");
if (index > 0) {
    Console.WriteLine("grapeを含みます!");
}

最初にfruits変数に、4つの文字列でリストを作りました。

次の処理で、リストからLastIndexOfメソッドを呼び出して含まれているか確認しています。
LastIndexOfメソッドに引数として渡しているのは、含んでいるか確認したい値です。

IndexOfメソッドと同じように、含んでいるときには要素番号が返ってきて、含んでないときには数値の「-1」が返ってきます。
今回の「grape」は含まれているので、要素番号の「2」が返ってきます。

プログラムを実行すると、「grapeを含みます!」を出力して、処理が終了します。

複数の重複する値があったときは?

リストに複数の要素があったときには、LastIndexOfメソッドを使うと、一番最後に見つかった要素番号を返してくれます。

List<string> fruits = new List<string>() {"apple", "orange", "grape", "banana", "apple", "grape"};

int index = fruits.LastIndexOf("grape");
if (index > 0) {
    Console.WriteLine("grapeを含みます!");
}

fruits変数に、6つの文字列でリストを作りました。
grape」の要素が、2番目と5番目で重複しています。

このときには、一番最後に見つかった位置の「5」が返ってきます。

IndexOfメソッドとLastIndexOfメソッドの違い

上記までの内容を確認してもらうと、気づいたかもしれませんが、重複する要素があったときに返ってくる要素番号が変わります。

IndexOfメソッドのときには、先頭から探して一番最初に見つかった要素の要素番号が返ってきます。
LastIndexOfメソッドのときには、一番最後の要素番号が返ってきます。

どちらのメソッドも、先頭の0番目から数えた要素番号になります。

リストに要素を含むか検索する方法まとめ

今回はC#のリストに要素を含むか検索して、確認する方法について書きました。
記事の内容をまとめると、下記のようになります。

メソッド 説明
Contains 含むか確認したい値を渡す。含むときにはTrue、含まないときにはFalseが返ってくる。 fruits.Contains(“orange”)
IndexOf 含むか確認したい値を渡す。先頭から数えて、一番最初の要素番号が返ってくる。
存在しないときには「-1」が返ってくる。
fruits.IndexOf(“banana”)
LastIndexOf 含むか確認したい値を渡す。先頭から数えて、一番最後の要素番号が返ってくる。
存在しないときには「-1」が返ってくる。
fruits.LastIndexOf(“grape”)

コメント

タイトルとURLをコピーしました