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#でのプログラミングがぐっと楽になります。