C#のコレクションとLINQの活用テクニックまとめ|初心者でもわかる便利な使い方
生徒
「C#でたくさんのデータをまとめて扱うとき、どんな方法がありますか?」
先生
「C#ではコレクションを使うと便利です。さらにLINQを使うとデータを検索したり並べ替えたりするのが簡単になりますよ。」
生徒
「コレクションって配列と違うんですか?」
先生
「配列も便利ですが、コレクションの方が柔軟で使いやすいことが多いんです。具体的な例を見ながら学んでいきましょう!」
1. C#のコレクションとは?
C#のコレクションとは、データをまとめて管理するための入れ物のようなものです。たとえば「買い物かご」のように、リンゴやバナナなど複数のものを入れて管理することができます。
配列(Array)もデータを並べて格納できますが、コレクションは追加や削除が簡単にできるので、より実用的です。特によく使うのがList<T>(リスト)です。
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> fruits = new List<string>();
fruits.Add("りんご");
fruits.Add("ばなな");
fruits.Add("みかん");
foreach (var f in fruits)
{
Console.WriteLine(f);
}
}
}
りんご
ばなな
みかん
このように、リストを使うと簡単に要素を追加できます。配列と違って大きさを気にする必要がありません。
2. よく使うコレクションの種類
C#にはいろいろなコレクションがあります。用途に合わせて選ぶことで、効率よくプログラムを書くことができます。
List<T>:順番にデータを管理できるリストDictionary<TKey,TValue>:キーと値の組み合わせで管理できる(辞書のようなもの)Queue<T>:先に入れたものを先に取り出す(スーパーの列のようなイメージ)Stack<T>:後から入れたものを先に取り出す(積み重ねた本を取るようなイメージ)
例えば、Dictionaryを使うと名前と年齢をセットで管理できます。
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["太郎"] = 20;
ages["花子"] = 22;
Console.WriteLine(ages["太郎"]); // 20
3. LINQでデータを扱う
LINQ(Language Integrated Query)とは、データを検索・抽出・並べ替え・集計できる便利な仕組みです。SQLというデータベースの言語に似た書き方ができるので、複雑な処理もシンプルに書けます。
例えば、リストの中から条件に合うものだけを取り出すことができます。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 5, 8, 10, 15, 20 };
var result = numbers.Where(n => n > 10);
foreach (var n in result)
{
Console.WriteLine(n);
}
}
}
15
20
Whereを使うと「条件に一致するものだけ取り出す」ことができます。このようにLINQを使うと、条件分岐やループをシンプルに書けるのが大きなメリットです。
4. LINQの便利なメソッド
LINQにはたくさんの便利なメソッドがあります。よく使うものをいくつか紹介します。
Where:条件に合うデータだけを抽出Select:必要な項目だけを取り出すOrderBy:データを昇順(小さい順)に並べるOrderByDescending:データを降順(大きい順)に並べるCount:データの数を数える
List<string> fruits = new List<string> { "りんご", "ばなな", "みかん", "ぶどう" };
var sorted = fruits.OrderBy(f => f);
foreach (var f in sorted)
{
Console.WriteLine(f);
}
ぶどう
ばなな
みかん
りんご
この例では、果物の名前を五十音順に並べ替えています。プログラムで並べ替えを自分で書く必要がないので、とても効率的です。
5. コレクションとLINQを組み合わせると最強
コレクションとLINQを組み合わせると、実際のアプリケーション開発でとても強力です。例えば「ある年齢以上の人だけを取り出して並べ替える」といった処理も数行で書けます。
var people = new List<(string Name, int Age)>
{
("太郎", 20),
("花子", 22),
("次郎", 18)
};
var adults = people.Where(p => p.Age >= 20)
.OrderBy(p => p.Age);
foreach (var p in adults)
{
Console.WriteLine($"{p.Name} ({p.Age})");
}
太郎 (20)
花子 (22)
このように、コレクションとLINQを活用することでデータ処理をわかりやすく効率的に記述できます。初心者のうちに慣れておくと、C#でのプログラミングがぐっと楽になります。
まとめ
C#のコレクションとLINQは、複数のデータを効率よく扱うために欠かせない要素であり、初心者が早い段階から身につけておくことで、プログラム全体の理解がぐっと深まり、実践的な開発にも大きく役立ちます。コレクションは、配列よりも柔軟にデータを追加・削除でき、場面に応じて使い分けることができる点が大きな特徴です。特にList<T>、Dictionary<TKey, TValue>、Queue<T>、Stack<T>といった代表的なコレクションはそれぞれ目的が明確で、データの管理やアクセスを簡単にしてくれます。
一方で、LINQはコレクションに対して「検索」「並べ替え」「抽出」「集計」などを直感的に書ける強力な機能です。複雑な条件を使った抽出も、SQLのような短いコードで実現できるため、処理の可読性が向上し、変更にも強いコードを書けるようになります。
コレクションとLINQを組み合わせることで、動作の流れをシンプルに保ちながら効率的なデータ処理が行えるため、実際のアプリケーション開発でも頻繁に活用されます。特に、条件で絞り込んだり、並び替えたり、特定の項目だけを取り出したりする場面では大きな効果を発揮します。ここではまとめとして、コレクションとLINQを組み合わせたサンプルコードを改めて示し、応用の幅を感じてもらえるよう整理しています。
コレクションとLINQを活用したサンプルプログラム
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<(string Name, int Age)> people = new List<(string Name, int Age)>
{
("たろう", 25),
("はなこ", 30),
("じろう", 18),
("みさき", 27)
};
// 年齢20以上をLINQで抽出し、年齢順で並べ替え
var adults = people.Where(p => p.Age >= 20)
.OrderBy(p => p.Age)
.Select(p => $"{p.Name}({p.Age}さい)");
Console.WriteLine("20さい以上のひとの一覧:");
foreach (var p in adults)
{
Console.WriteLine(p);
}
}
}
このサンプルでは、コレクションで人物データを管理しつつ、LINQのWhere(抽出)、OrderBy(並べ替え)、Select(整形)という三つの基本操作を組み合わせています。これにより、複雑に見えるデータ処理も短く整理され、コードの見通しがとてもよくなります。
C#ではこのような書き方が日常的に使われ、実務でも大きな力を発揮するため、初心者の段階でコレクションとLINQに慣れておくことは非常に価値があります。特に、LINQはほかの言語にはない書き心地を持っており、学べば学ぶほど表現力が広がっていきます。
今回学んだ内容をふりかえりつつ、今後さらに高度なLINQ操作(グループ化、結合、集計処理など)にも挑戦する土台ができるよう、基本をしっかり身につけておくことが大切です。
生徒
「コレクションって配列よりできることが多いんですね。LINQで検索や並べ替えもすぐにできるのがすごいと思いました!」
先生
「そうですね。コレクションはデータを扱うときの基本となりますし、LINQはコードを短くわかりやすくしてくれます。組み合わせるとさらに便利になりますよ。」
生徒
「たくさんのデータがあっても短いコードでまとめられるので、初心者でも扱いやすいと感じました!」
先生
「その感覚はとても大事です。コレクションとLINQを理解しておくと、アプリケーション開発が格段に楽になりますし、より柔軟なプログラムが書けるようになりますよ。」
生徒
「今日の内容をもっと応用して、ほかのLINQメソッドも試してみたくなりました!」
先生
「ぜひ挑戦しましょう。SelectMany、GroupBy、Joinなど、覚えると便利な仕組みがまだまだあります。ひとつずつ確実に身につけていけば大丈夫ですよ。」