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

VB.NETのコレクション・配列フィルタリングを完全解説!条件に合うデータの抽出方法

VB.NETでコレクションをフィルタリングする方法
VB.NETでコレクションをフィルタリングする方法

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

生徒

「先生、たくさんのデータが入ったリストの中から、特定の条件に合うものだけを選び出すことはできますか?」

先生

「はい、もちろんです。それをプログラミングでは『フィルタリング』や『抽出(ちゅうしゅつ)』と呼びます。」

生徒

「例えば、テストの結果から80点以上の人だけを探すような感じですね!」

先生

「その通りです!VB.NETには、データをふるいにかける便利な方法がいくつかあります。基本から一つずつ学んでいきましょう!」

1. フィルタリングとは?データの「ふるい分け」

1. フィルタリングとは?データの「ふるい分け」
1. フィルタリングとは?データの「ふるい分け」

プログラミングにおけるフィルタリングとは、大量にあるデータの中から、自分が決めたルール(条件)に一致するものだけを取り出す作業のことです。日常生活で例えるなら、たくさんの野菜の中から「赤いものだけ」を選んだり、スマートフォンの連絡先から「名字が田中の人だけ」を検索したりする動きに似ています。

VB.NET(ヴィービー・ドットネット)という言語では、配列やリストといったコレクション(データの集まり)を対象に、このフィルタリングを非常に効率よく行うことができます。これをマスターすれば、膨大なデータから必要な情報だけを瞬時に見つけ出すプログラムが作れるようになります。

2. 一番の基本:For Each文とIf文の組み合わせ

2. 一番の基本:For Each文とIf文の組み合わせ
2. 一番の基本:For Each文とIf文の組み合わせ

最も基本的で、仕組みが分かりやすい方法は、以前学習した「繰り返し処理(ループ)」と「条件分岐(If文)」を組み合わせる方法です。一つひとつのデータを手に取って確認し、条件に合えば別のカゴに移していくという、一番原始的で確実なやり方です。

この方法は、後述する便利な機能を使わなくても、これまでの知識だけで実現できるのが最大の強みです。初心者の方はまずこの流れをしっかりとイメージできるようになりましょう。

3. ループを使ったフィルタリングの実践コード

3. ループを使ったフィルタリングの実践コード
3. ループを使ったフィルタリングの実践コード

それでは、実際に数字が入ったリストから「50以上の数字だけ」を取り出すコードを書いてみましょう。新しい空のリスト(カゴ)を用意するのがコツです。


' 全てのデータが入ったリスト
Dim allNumbers As New List(Of Integer) From {10, 85, 42, 67, 23, 90}
' 条件に合うものだけを入れる新しいリスト
Dim filteredList As New List(Of Integer)

' 一つずつ順番にチェックしていきます
For Each num As Integer In allNumbers
    ' もし数字が50以上なら、新しいリストに追加します
    If num >= 50 Then
        filteredList.Add(num)
    End If
Next

' 結果を表示します
For Each result As Integer In filteredList
    Console.WriteLine(result & " は50以上です。")
Next

実行結果は以下の通りです。


85 は50以上です。
67 は50以上です。
90 は50以上です。

4. LINQ(リンク)を使ったスマートな抽出

4. LINQ(リンク)を使ったスマートな抽出
4. LINQ(リンク)を使ったスマートな抽出

先ほどのループを使った方法は分かりやすいですが、コードが少し長くなってしまいます。そこで登場するのがLINQ(リンク)という機能です。LINQを使うと、「〇〇という条件でデータを探して!」という命令を、まるで英語の文章のように短く書くことができます。

現代のVB.NET開発では、このLINQを使ったフィルタリングが主流です。なぜなら、読みやすく、間違いが少なくなるからです。特にWhere(ウェア)というキーワードを使うことで、特定の条件を絞り込むことができます。

5. LINQで文字列のリストを絞り込む方法

5. LINQで文字列のリストを絞り込む方法
5. LINQで文字列のリストを絞り込む方法

次は文字列(文字のデータ)をフィルタリングしてみましょう。例えば、名前のリストの中から「『た』で始まる名前」だけを探すプログラムです。


Dim names As New List(Of String) From {"たなか", "さとう", "たか橋", "すずき"}

' LINQ(クエリ構文)を使って「た」から始まる名前を抽出
Dim results = From n In names
              Where n.StartsWith("た")
              Select n

' 抽出された名前を順番に表示
For Each name In results
    Console.WriteLine("見つかりました: " & name)
Next

実行結果は以下の通りです。


見つかりました: たなか
見つかりました: たか橋

Where n.StartsWith("た") という部分が、「『た』で始まるもの」というフィルターの役割を果たしています。非常に直感的で分かりやすいですね。

6. 複数の条件を組み合わせる(AndとOr)

6. 複数の条件を組み合わせる(AndとOr)
6. 複数の条件を組み合わせる(AndとOr)

フィルターは一つだけでなく、複数の条件を重ねることもできます。例えば、「50点以上」かつ「80点未満」といった範囲指定や、「東京都の人」または「神奈川県の人」といった指定が可能です。

これには、以前の授業で習ったAnd(アンド)Or(オア)を使います。これにより、より複雑で精度の高いデータ抽出が可能になります。

7. 複数条件でのフィルタリング実演

7. 複数条件でのフィルタリング実演
7. 複数条件でのフィルタリング実演

今度は、数字のリストから「偶数(2で割り切れる数)」かつ「10より大きい数」を探してみましょう。


Dim data As New List(Of Integer) From {2, 5, 12, 18, 7, 20}

' 偶数(2で割った余りが0)かつ 10より大きい
Dim filteredData = From d In data
                   Where d Mod 2 = 0 And d > 10
                   Select d

For Each val In filteredData
    Console.WriteLine("条件一致: " & val)
Next

実行結果は以下の通りです。


条件一致: 12
条件一致: 18
条件一致: 20

Mod(モッド)は「割り算の余り」を計算する記号です。このように、計算式をフィルターの中に組み込むことも自由にできます。

8. フィルタリング時に注意すべきこと

8. フィルタリング時に注意すべきこと
8. フィルタリング時に注意すべきこと

便利なフィルタリングですが、初心者がハマりやすいポイントがいくつかあります。一つは「元のリストは変わらない」ということです。フィルタリングを行っても、元のデータが消えてしまうわけではありません。あくまで「条件に合うものを別の場所で覗き見している」状態です。

もう一つは、もし条件に合うものが一つもなかった場合です。その場合、結果は「空っぽ」になりますが、プログラム自体はエラーになりません。空っぽの状態で無理やり何かをしようとするとエラーが起きることがあるので、「見つかったかな?」と件数を確認する習慣をつけると、よりプロらしいコードになります。

9. パフォーマンスと効率の話

9. パフォーマンスと効率の話
9. パフォーマンスと効率の話

データが数件であればどんな方法でも一瞬で終わりますが、これが数百万件という膨大なデータになると、フィルタリングの「効率」が重要になります。

LINQは内部で非常に高度な最適化(速く動くための工夫)が行われているため、基本的にはLINQを使って書くのがおすすめです。また、条件を指定する順番も大切です。例えば、一気にデータが減るような強力な条件を最初に書くことで、パソコンの無駄な計算を減らすことができます。パソコンに優しいプログラムを心がけましょう!

10. フィルタリングを使いこなして次のステップへ

10. フィルタリングを使いこなして次のステップへ
10. フィルタリングを使いこなして次のステップへ

データの抽出ができるようになると、プログラムは一気に「実用的」になります。家計簿アプリで「先月の出費だけ」を表示したり、ゲームで「体力がゼロになった敵だけ」を画面から消したりと、あらゆるところでこの技術が使われています。

まずは一番シンプルな For EachIf の組み合わせから始め、徐々に LINQ の魔法に慣れていってください。自分で書いた条件通りにデータが絞り込まれたときの快感は、プログラミングを続ける大きなモチベーションになるはずです!

カテゴリの一覧へ
新着記事
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の認証の仕組みを完全解説!初心者でもわかるログインの基本