C#のLINQ to ObjectsとLINQ to SQLの違いを理解しよう!初心者向け解説
生徒
「先生、C#のLINQって色々種類があるみたいですけど、LINQ to ObjectsとLINQ to SQLって何が違うんですか?」
先生
「良いところに気がつきましたね。C#のLINQにはいくつかの使い方があって、その中でもLINQ to ObjectsとLINQ to SQLは代表的なものです。」
生徒
「同じLINQなのに2つに分かれているのはどうしてですか?」
先生
「それは、操作する対象が違うからです。ひとつはC#プログラム内のデータを扱うため、もうひとつはデータベースを扱うために使います。」
1. LINQとは?
C#のLINQ(Language Integrated Query)は、「データに対して検索や並べ替えなどの処理をする仕組み」です。SQLのような書き方をC#の中でそのまま使えるので、リストや配列の検索、データベースからのデータ取得などを直感的に書けるのが特徴です。
LINQを使うと、for文やforeach文を自分で書かなくても、短いコードで効率よくデータを操作できるようになります。
2. LINQ to Objectsとは?
LINQ to Objectsは、C#のプログラム内で扱う配列やリストなどのコレクションを操作する方法です。コレクションとは、データをまとめて管理する箱のようなものです。例えば、数字を10個入れたり、文字列をまとめたりすることができます。
つまり、LINQ to Objectsは、パソコンのメモリ上にあるデータを対象に検索や並べ替えをする機能なのです。
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 5, 8, 12, 20, 25 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
}
}
8
12
20
この例では、リストの中から偶数だけを取り出しています。これがLINQ to Objectsの基本的な使い方です。
3. LINQ to SQLとは?
LINQ to SQLは、C#のプログラムからデータベースにアクセスして、データを操作する方法です。データベースは、大量のデータを保存して管理する仕組みで、会社の顧客情報や商品の在庫情報などがここに保存されます。
普通はSQLという言語でデータベースに問い合わせをしますが、LINQ to SQLを使うと、C#のコードの中で直接データベースを操作できるのです。
using System;
using System.Linq;
using System.Data.Linq;
public class Customer
{
public int Id;
public string Name;
public string City;
}
class Program
{
static void Main()
{
DataContext db = new DataContext("接続文字列を書きます");
Table<Customer> customers = db.GetTable<Customer>();
var tokyoCustomers = from c in customers
where c.City == "Tokyo"
select c;
foreach (var customer in tokyoCustomers)
{
Console.WriteLine(customer.Name);
}
}
}
山田太郎
佐藤花子
この例では、データベースに保存された顧客情報から「東京に住んでいる人」だけを取り出しています。プログラムの中でSQL文を書かずに、C#のLINQ構文だけで操作できるのが大きな特徴です。
4. LINQ to ObjectsとLINQ to SQLの違い
ここまでの説明をまとめると、次のような違いがあります。
- LINQ to Objects:配列やリストなど、C#プログラムの中にあるデータを操作する。
- LINQ to SQL:データベースに保存されているデータを操作する。
イメージとしては、LINQ to Objectsは「机の上に置いたメモ帳の中から必要な情報を探す」、LINQ to SQLは「図書館に保管された本棚の中から探す」と考えると分かりやすいでしょう。
5. 初心者が意識すべきポイント
初心者の方はまずLINQ to Objectsから練習するのがおすすめです。なぜなら、データベースを用意しなくてもリストや配列を使って簡単に試せるからです。
LINQ to SQLはデータベースの知識も必要になりますが、学べば企業システムやWebアプリ開発で役立つ強力な技術です。両方を理解して使い分けられるようになると、C#プログラマーとして大きな力になります。