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

VB.NETのLINQ完全ガイド!初心者でもデータの抽出・並び替えが簡単にできる方法

VB.NETのLINQを使ったコレクション操作の基本
VB.NETのLINQを使ったコレクション操作の基本

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

生徒

「先生、たくさんのデータの中から特定の条件に合うものだけを取り出したいとき、どうすればいいですか?」

先生

「VB.NETには、LINQ(リンク)という魔法のような仕組みがあります。これを使えば、複雑なループを書かなくても一行でデータを操作できるんですよ。」

生徒

「魔法ですか!初心者でも使いこなせますか?」

先生

「はい、とても直感的です。それでは、基本的なLINQの使い方をマスターしていきましょう!」

1. LINQ(リンク)とは何か?

1. LINQ(リンク)とは何か?
1. LINQ(リンク)とは何か?

LINQとは「Language Integrated Query」の略称で、日本語では「言語統合クエリ」と呼びます。これだけ聞くと難しそうですが、簡単に言うと「配列やコレクション(データの集まり)に対して、検索したり、並び替えたりするための専用の命令文」のことです。

例えば、100枚のカードの中から「赤いカードだけを取り出す」とか「数字の大きい順に並べる」といった作業を、プログラミングの世界でスマートに行うための道具です。通常、こうした作業を行うには「繰り返し処理(For Eachなど)」を使って一つずつ確認していく必要がありますが、LINQを使うと非常に短いコードで、読みやすく書くことができます。

2. LINQを使うための準備

2. LINQを使うための準備
2. LINQを使うための準備

VB.NETでLINQを使うためには、プログラムの冒頭で「LINQの機能を使いますよ」という宣言が必要になることがあります。現在の多くの開発環境では自動的に設定されていますが、基本的には「Imports System.Linq」という一文が裏側で動いています。

また、LINQはコレクションと呼ばれるデータの集合体に対して使います。配列(Array)やリスト(List)などがその代表です。これから紹介する例では、数字のリストや文字列のリストを元に、どのようにデータを加工していくかを解説します。

3. データを絞り込む「Where」の使い方

3. データを絞り込む「Where」の使い方
3. データを絞り込む「Where」の使い方

もっとも頻繁に使われるのが、条件に合うデータだけを抽出するWhere(ウェア)です。英語の「どこに~があるか」というニュアンスと同じで、「この条件に一致するデータはどこ?」と探すイメージです。

以下のサンプルコードは、数字のリストの中から「50より大きい数字」だけを取り出すプログラムです。


' 数字のリストを作成します
Dim numbers As New List(Of Integer) From {10, 85, 40, 60, 25}

' 50より大きい数字だけを抽出します(LINQのクエリ構文)
Dim result = From n In numbers
             Where n > 50
             Select n

' 結果を表示します
For Each x In result
    Console.WriteLine(x)
Next

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


85
60

このように、Where n > 50と書くだけで、複雑な条件判定を省略して必要なデータだけを抜き出すことができました。

4. データを並び替える「Order By」の使い方

4. データを並び替える「Order By」の使い方
4. データを並び替える「Order By」の使い方

次に便利なのが、データを特定のルールで並び替えるOrder By(オーダーバイ)です。名簿をあいうえお順に並べたり、商品の価格が安い順に並べたりする際に大活躍します。

昇順(小さい順)にしたいときはそのまま、降順(大きい順)にしたいときはDescending(ディセンディング)というキーワードを付け加えます。


' 果物の名前リスト
Dim fruits As New List(Of String) From {"りんご", "バナナ", "いちご", "みかん"}

' 名前の文字数(長さ)が短い順に並び替えます
Dim sortedFruits = From f In fruits
                   Order By f.Length
                   Select f

For Each fruit In sortedFruits
    Console.WriteLine(fruit)
Next

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


りんご
バナナ
みかん
いちご

文字の長さだけでなく、アルファベット順や数値の大小など、あらゆる基準で並び替えが可能です。

5. 必要な部分だけ取り出す「Select」の役割

5. 必要な部分だけ取り出す「Select」の役割
5. 必要な部分だけ取り出す「Select」の役割

Select(セレクト)は、データの形を変えたり、特定の情報だけを抜き出したりするときに使います。例えば、社員情報という大きなデータの中から「名前だけ」を抜き出して新しいリストを作るようなイメージです。

初心者の方は「全部のデータが必要だから、いつもSelect n(そのまま選択)でいいのでは?」と思うかもしれませんが、大量のデータを扱うプログラミングでは、必要な情報だけに絞り込むことで動作を軽くする効果もあります。

6. メソッド構文とクエリ構文の違い

6. メソッド構文とクエリ構文の違い
6. メソッド構文とクエリ構文の違い

実は、LINQには2通りの書き方があります。一つは先ほどから使っている「SQL」というデータベース言語に似たクエリ構文、もう一つはドット(.)で命令を繋いでいくメソッド構文です。

メソッド構文は、numbers.Where(Function(n) n > 50)のように書きます。最初はクエリ構文の方が「英語の文章」のように読めるので理解しやすいでしょう。慣れてくると、どちらの書き方でも同じ結果が得られることが分かります。

7. ラムダ式:もっと短く書くためのコツ

7. ラムダ式:もっと短く書くためのコツ
7. ラムダ式:もっと短く書くためのコツ

メソッド構文を使う際にセットで登場するのがラムダ式です。これは、その場限りの小さな計算式のようなものです。Function(n) n * 2と書けば、「受け取った数字を2倍にする」という命令になります。

パソコンを触ったことがない方には少し難しく感じるかもしれませんが、「使い捨てのルール」だと考えてください。このルールをLINQの命令に渡すことで、自由自在にデータを加工できるようになります。

8. LINQを使うメリットと注意点

8. LINQを使うメリットと注意点
8. LINQを使うメリットと注意点

LINQを使う最大のメリットは、「何をするか」が明確になることです。ループ文(For Each)で書くと、「どうやって処理するか」という手順を細かく書く必要がありますが、LINQなら「これを探して、こう並べて」と宣言するだけで済みます。

注意点としては、非常に便利な反面、あまりにも巨大なデータ(数千万件など)に対して複雑なLINQを使いすぎると、少しだけ処理に時間がかかることがあります。しかし、学習段階や一般的なアプリ開発においては、その利便性がデメリットを大きく上回ります。

9. 文字列の抽出に挑戦してみよう

9. 文字列の抽出に挑戦してみよう
9. 文字列の抽出に挑戦してみよう

最後に、もう少し実戦に近い例を見てみましょう。「特定の文字から始まる単語だけを集める」という処理です。


Dim words As New List(Of String) From {"apple", "banana", "apricot", "cherry"}

' 「a」で始まる単語だけを抜き出します
Dim aWords = From w In words
             Where w.StartsWith("a")
             Select w

For Each word In aWords
    Console.WriteLine(word)
Next

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


apple
apricot

StartsWith(スターツ・ウィズ)という命令と組み合わせることで、「aから始まるもの」という条件を簡単に作ることができました。

10. LINQをマスターするための第一歩

10. LINQをマスターするための第一歩
10. LINQをマスターするための第一歩

LINQは一度にすべてを覚えようとする必要はありません。まずはWhereで絞り込み、Order Byで並び替える、この2つができるようになるだけで、あなたの書くプログラムは劇的に進化します。

プログラミング未経験の方は、まず「データを取り出すための魔法の呪文」があるんだな、という感覚で触れてみてください。自分で書いたコードが思い通りにデータを仕分けてくれたときの感動は、プログラミングの楽しさそのものです。

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