カテゴリ: VB.NET 更新日: 2026/02/08

VB.NETのコレクション検索方法を完全ガイド!データを探す基本テクニック

VB.NETでコレクションを検索する方法
VB.NETでコレクションを検索する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、リストの中に特定の名前や数字が入っているか調べたいときは、どうすればいいですか?」

先生

「VB.NETには、たくさんのデータの中から目的のものを見つける『検索』という便利な機能が備わっていますよ。」

生徒

「一つずつ目で見て確認するのは大変そうですが、プログラムなら一瞬ですか?」

先生

「その通りです!数万個のデータからでも一瞬で探し出せます。まずは簡単な方法から見ていきましょう!」

1. コレクションの検索とは?

1. コレクションの検索とは?
1. コレクションの検索とは?

VB.NETのプログラミングにおける検索(けんさく)とは、配列やリストといったコレクション(データの集まり)の中に、特定の値が存在するかどうかを確認したり、その場所を特定したりする作業のことです。

例えば、お店の在庫リストの中から「リンゴ」があるか探したり、出席簿の中から「田中さん」が何番目にいるか調べたりするイメージです。パソコンは人間よりも圧倒的に速く、正確にこの作業を行うことができます。データ操作の基本となる検索を覚えることで、より実用的なアプリが作れるようになります。

2. 「入っているかな?」を確認する Contains メソッド

2. 「入っているかな?」を確認する Contains メソッド
2. 「入っているかな?」を確認する Contains メソッド

もっともシンプルで使いやすいのが Contains(コンテインズ)という命令です。英語で「~を含む」という意味がある通り、指定した値がリストの中に一つでも入っていれば「はい(True)」、なければ「いいえ(False)」と答えてくれます。

日常生活で例えるなら、カバンの中に「鍵」が入っているかどうか、手探りで確認するような感覚ですね。具体的な場所までは分かりませんが、有無だけを知りたいときに最適です。


Dim fruits As New List(Of String) From {"リンゴ", "バナナ", "オレンジ"}

' 「バナナ」が含まれているか調べます
If fruits.Contains("バナナ") Then
    Console.WriteLine("バナナは見つかりました!")
Else
    Console.WriteLine("バナナはありません。")
End If

バナナは見つかりました!

3. 「何番目にあるかな?」を調べる IndexOf メソッド

3. 「何番目にあるかな?」を調べる IndexOf メソッド
3. 「何番目にあるかな?」を調べる IndexOf メソッド

値があるかどうかだけでなく、「何番目の箱に入っているか」を知りたいときは IndexOf(インデックス・オブ)を使います。インデックスとは、データの住所のような番号のことです。

VB.NETのルールでは、番号は必ず0番から始まることに注意してください。もし、探しているものが見つからなかった場合は「-1」という特別な数字が返ってきます。これは「そんな場所はありません」という合図です。


Dim colors As New List(Of String) From {"赤", "青", "黄"}

' 「青」が何番目にあるか検索します
Dim position As Integer = colors.IndexOf("青")

If position <> -1 Then
    Console.WriteLine("青は " & position & " 番目に見つかりました!")
Else
    Console.WriteLine("見つかりませんでした。")
End If

青は 1 番目に見つかりました!

4. 条件に合う「最初の一つ」を探す Find メソッド

4. 条件に合う「最初の一つ」を探す Find メソッド
4. 条件に合う「最初の一つ」を探す Find メソッド

「全く同じ文字」を探すのではなく、「〇〇で始まる言葉」や「80点以上の数字」など、条件に合うものを探したいときは Find(ファインド)を使います。

これは少し高度な使い方に見えますが、「ラムダ式」という短いルールを渡すことで、パソコンに細かい指示を出せます。例えば、名簿の中から「苗字が『田』で始まる最初の人」を抜き出すといったことが可能です。

5. 数値のリストを条件検索する実演

5. 数値のリストを条件検索する実演
5. 数値のリストを条件検索する実演

次に、数値のリストから特定の条件を満たす値を探してみましょう。ここでは「50より大きい最初の数字」を探してみます。


Dim scores As New List(Of Integer) From {10, 45, 82, 30, 95}

' 50より大きい数字を一つ探します
' Function(s) s > 50 というのが「50より大きい」というルールです
Dim highScore As Integer = scores.Find(Function(s) s > 50)

Console.WriteLine("最初に見つかった50点超えは: " & highScore)

最初に見つかった50点超えは: 82

このように、リストの中に複数の正解があっても、Find は最初に出会ったものだけを教えてくれます。

6. 条件に合う「すべて」を探す FindAll

6. 条件に合う「すべて」を探す FindAll
6. 条件に合う「すべて」を探す FindAll

最初の一つだけでは満足できない、条件に合うものを全部抜き出したい!というときは FindAll(ファインド・オール)の出番です。

FindAll を使うと、結果は一つの値ではなく、条件に一致したものだけを詰め込んだ「新しいリスト」として返ってきます。フィルター(濾過器)を通すようなイメージですね。これで、特定の条件に合うグループを簡単に作ることができます。

7. LINQ(リンク)を使ったさらに強力な検索

7. LINQ(リンク)を使ったさらに強力な検索
7. LINQ(リンク)を使ったさらに強力な検索

VB.NETには LINQ(リンク) という非常に強力な検索ツールもあります。これを使うと、まるで「日本語で命令している」かのような感覚でデータを検索できます。

具体的には Where(どこに~があるか)という言葉を使い、複雑な条件をいくつも重ねて検索することができます。今は「そんなすごい魔法もあるんだな」と覚えておくだけで大丈夫です。

8. 検索がうまくいかないときのチェックポイント

8. 検索がうまくいかないときのチェックポイント
8. 検索がうまくいかないときのチェックポイント

初心者の方が検索機能を作るとき、よく「見つかるはずなのに見つからない!」という壁にぶつかります。主な原因は全角と半角の違いや、大文字と小文字の違いです。

人間から見れば「A」と「A」は同じですが、パソコンにとっては全くの別物です。検索をするときは、あらかじめ文字の種類を統一しておいたり、パソコンに「大文字と小文字は無視して探してね」と追加の指示を出したりするのがコツです。

9. 空っぽのリストを検索するとどうなる?

9. 空っぽのリストを検索するとどうなる?
9. 空っぽのリストを検索するとどうなる?

もし、データが一つも入っていない空っぽのリストを検索しようとするとどうなるでしょうか。基本的にはエラーにならず、単に「見つかりませんでした」という結果(Falseや-1など)が返ってきます。

ただし、検索結果が「何もない(Nothing)」状態のまま、そのデータを使おうとするとプログラムが止まってしまうことがあります。これを防ぐために、検索した後は必ず「ちゃんと見つかったかな?」と If 文で確認するのが、安全なプログラムを作るための大切なマナーです。

10. 検索機能をマスターして便利なアプリへ

10. 検索機能をマスターして便利なアプリへ
10. 検索機能をマスターして便利なアプリへ

データの検索は、あらゆるアプリケーションの心臓部です。電話帳、音楽プレーヤーの曲探し、ネットショッピングの絞り込み機能など、私たちが普段使っている機能のほとんどに「検索」が使われています。

今回学んだ ContainsIndexOf を使いこなせるようになれば、あなたのプログラムは一気に「賢いアプリ」へと進化します。まずは自分の好きな言葉を並べたリストを作って、いろいろな探し方を試してみてくださいね!

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.2
Java&Spring記事人気No2
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本