C#のLINQとラムダ式を組み合わせた活用例を完全ガイド!初心者でもわかる解説
生徒
「先生、C#のLINQって聞いたことがありますけど、どうやって使うんですか?」
先生
「LINQは、リストや配列などのデータを検索・並び替え・抽出するための機能なんです。とても便利ですよ。」
生徒
「へえ!でも難しそう…。ラムダ式っていう言葉も一緒に出てきますけど、それも関係あるんですか?」
先生
「はい。LINQとラムダ式を組み合わせると、とてもシンプルで読みやすいコードが書けます。それでは基本から一緒に学んでいきましょう!」
1. LINQとは?
C#のLINQ(Language Integrated Query)は、データを簡単に検索・抽出・並び替えできる仕組みです。普通、データを扱うときにはfor文やif文を駆使して複雑に書きますが、LINQを使えば短いコードでスッキリと書けるようになります。例えば「リストの中から条件に合うものだけ取り出す」といった操作を、まるで自然な言葉のように記述できるのです。
2. ラムダ式とは?
ラムダ式とは、簡単に書ける「小さな関数」のようなものです。通常の関数は名前を付けて宣言しますが、ラムダ式はその場でサッと書けます。=>という矢印を使うのが特徴です。
例えば「xという数を2倍にするラムダ式」はこう書きます。
x => x * 2
この表現をLINQに組み込むことで、データ処理をコンパクトに書けるようになります。
3. LINQとラムダ式を組み合わせた例
それでは実際にC#のリスト(List型)を使って、LINQとラムダ式を組み合わせた例を見てみましょう。例えば「整数のリストから偶数だけを取り出す」という操作です。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
// LINQとラムダ式を使って偶数を抽出
var evenNumbers = numbers.Where(x => x % 2 == 0);
foreach (var n in evenNumbers)
{
Console.WriteLine(n);
}
}
}
実行すると、リストの中から偶数だけが表示されます。
2
4
6
ここで使っているWhereメソッドは「条件に合うものを抽出する」LINQの代表的なメソッドです。ラムダ式 x => x % 2 == 0 が「xを2で割った余りが0のとき(つまり偶数)」という条件を表しています。
4. 並び替えや検索の例
LINQとラムダ式は抽出だけでなく、並び替えや検索にも便利です。例えば「リストを昇順に並べ替える」「特定の条件に合う最初の要素を取り出す」といったことができます。
昇順に並び替え
var sorted = numbers.OrderBy(x => x);
foreach (var n in sorted)
{
Console.WriteLine(n);
}
特定の条件に合うものを検索
var firstOverThree = numbers.First(x => x > 3);
Console.WriteLine(firstOverThree);
この場合、リストの中から最初に条件 x > 3 に当てはまる数字が取り出され、結果は 4 になります。
5. 実生活の例えで理解する
イメージしやすいように、買い物リストを例に考えてみましょう。スーパーで「野菜だけ欲しい」と思ったときに、商品全体のリストから「野菜」という条件でフィルタリングするのがLINQです。そして、その条件を簡単に表現するのがラムダ式です。
例えば、次のような商品リストから「名前にトマトが含まれるもの」だけを取り出すことができます。
List<string> items = new List<string> { "トマト", "りんご", "きゅうり", "ミニトマト" };
var tomatoes = items.Where(item => item.Contains("トマト"));
foreach (var t in tomatoes)
{
Console.WriteLine(t);
}
トマト
ミニトマト
このように、LINQとラムダ式を使えば日常的な「検索」や「並び替え」をプログラムの中でも自然に書けるのです。