C#のLINQでWhere・Select・OrderByを使う方法を完全解説!初心者でもわかる基本操作
生徒
「先生、C#でデータを取り出したり並べ替えたりする便利な方法ってありますか?」
先生
「いい質問ですね。C#にはLINQ(リンク)という仕組みがあって、コレクション(複数のデータの集まり)を簡単に操作できますよ。」
生徒
「LINQってどんなことができるんですか?」
先生
「例えば条件に合うデータだけを選ぶ Where、必要な部分だけを取り出す Select、順番を並べ替える OrderBy などがあります。今回はその3つを一緒に学んでいきましょう。」
1. LINQとは?
LINQ(Language Integrated Query)は、C#の中でSQLのようにデータを操作できる機能です。複雑なループを書かなくても、条件検索や並べ替えがシンプルに書けます。特にリスト(List)や配列(Array)などのコレクション操作に便利です。
例えると、たくさんの紙の束(データ)から「赤い紙だけを抜き出す」「数字の部分だけを取り出す」「小さい順に並べる」といった作業を、一言で命令できるイメージです。
2. Whereで条件に合うデータを取り出す
Whereは「条件に合うものだけを選び出す」ために使います。例えば、100点満点のテストの点数から、60点以上の合格者だけを取り出すことができます。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> scores = new List<int> { 45, 78, 92, 60, 55 };
var passed = scores.Where(s => s >= 60);
foreach (var score in passed)
{
Console.WriteLine(score);
}
}
}
実行結果:
78
92
60
このようにWhereを使うと、特定の条件を満たすデータだけを簡単に抜き出せます。
3. Selectで必要なデータだけを取り出す
Selectは「データから必要な部分だけを取り出す」ために使います。例えば、文字列のリストから文字の長さだけを取り出すことができます。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<string> names = new List<string> { "Taro", "Hanako", "Ken" };
var lengths = names.Select(n => n.Length);
foreach (var len in lengths)
{
Console.WriteLine(len);
}
}
}
実行結果:
4
6
3
このようにSelectを使うと、元のデータから新しい形のデータを作ることができます。
4. OrderByでデータを並べ替える
OrderByは「データを昇順(小さい順)に並べ替える」ために使います。また、OrderByDescendingを使えば降順(大きい順)に並べ替えられます。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 5, 2, 8, 1, 4 };
var sorted = numbers.OrderBy(n => n);
foreach (var num in sorted)
{
Console.WriteLine(num);
}
}
}
実行結果:
1
2
4
5
8
並べ替えも一行でできるので、非常に便利です。
5. Where・Select・OrderByを組み合わせる
これらのメソッドは組み合わせて使うこともできます。例えば、点数リストから60点以上の人の点数だけを抜き出して、昇順に並べることが可能です。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> scores = new List<int> { 45, 78, 92, 60, 55 };
var result = scores
.Where(s => s >= 60)
.OrderBy(s => s)
.Select(s => $"点数: {s}");
foreach (var item in result)
{
Console.WriteLine(item);
}
}
}
実行結果:
点数: 60
点数: 78
点数: 92
このように組み合わせることで、データ処理をシンプルかつ直感的に記述できます。
まとめ
C#におけるLINQ(Language Integrated Query)は、リストや配列といったコレクションに対する検索、抽出、並び替えといった操作を、直感的で簡潔な記述で実現できる強力な仕組みです。特にWhere、Select、OrderByは、LINQの中でも最も頻繁に使われる基本的なメソッドであり、初心者がまず最初に身につけたい操作です。
Whereメソッドは「条件に一致するデータだけを取り出す」ための方法で、点数が60点以上のデータだけを抽出したり、特定の文字列だけを選んだりする場面に便利です。
Selectメソッドは「元のデータを加工して別の形式で取り出す」用途に使われ、名前のリストから文字数だけを取り出すといった処理が簡単に書けます。
OrderByメソッドはデータを昇順に並び替えるためのものです。反対に降順にしたいときはOrderByDescendingを使います。これにより、値が小さい順、大きい順と自在に並べ替えができます。
さらに、LINQではこれらのメソッドを組み合わせてチェーンのように連続使用することが可能で、たとえば「60点以上の人だけを選び、その点数を小さい順に並べ、フォーマットして表示」といった処理も簡単に実装できます。これにより、従来のfor文やif文を使った複雑なロジックをシンプルに置き換えることができます。
実用的なLINQのサンプルコード
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> scores = new List<int> { 45, 78, 92, 60, 55 };
var results = scores
.Where(score => score >= 60)
.OrderBy(score => score)
.Select(score => $"合格点: {score}点");
foreach (var item in results)
{
Console.WriteLine(item);
}
}
}
上記の例では、LINQのWhere、OrderBy、Selectを組み合わせて、条件に合うデータを抽出し、並べ替え、整形しています。
このようにLINQを活用すれば、複雑な処理も非常に簡潔かつ明確に記述できるため、コードの可読性もメンテナンス性も大きく向上します。
また、LINQはListや配列だけでなく、辞書型やデータベースのクエリ、XML処理などさまざまな対象に対しても利用できるため、学んでおくことでC#全体のスキル向上につながります。
初心者のうちは、書き方を覚えるのが難しく感じるかもしれませんが、「Whereは絞り込み、Selectは加工、OrderByは並び替え」という基本的な役割さえ理解しておけば、実践の中で少しずつ応用力が身につきます。
生徒
「先生、LINQって最初は難しそうだと思ってたけど、実際に使ってみると便利ですね!」
先生
「そうなんです。特にWhereやSelect、OrderByはとてもよく使うので、繰り返し書いて慣れていくと自然と使えるようになりますよ。」
生徒
「点数のリストから合格者だけを選んで並べ替えて、整えた文章で表示するっていう流れがとても実用的でした。」
先生
「そうですね。実務でもログ出力やデータ集計、画面表示に応用できるので覚えておいて損はありませんよ。」
生徒
「Whereで条件を絞って、OrderByで並べて、Selectで文字を変形するって流れを意識すると理解しやすいです。」
先生
「その理解はとても大事です。今後は複数の条件を指定したり、GroupByやJoinといった発展的なLINQも出てくるので、今のうちに基本をしっかり身につけておきましょう。」
生徒
「はい!これからも実際のデータを使ってLINQの練習を続けてみます!」