【C#/LINQ】LINQの学習 その(1) とにかく使ってみる

投稿者: | 2011年12月14日

C#3.0からLINQという機能が加わった。
LINQとは「Language INtegrated Query」の略で、統合言語クエリと訳される。
LINQを使うと、C#やVBのコード中にSQLに似た検索文を記述でき、データを抽出したり、集計したりするロジックが書きやすくなる。
基本的なLINQを使ったプログラムは、例えば以下のようになる。

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqLesson
{
    class Program
    {
        static void Main(string[] args)
        {
            // データを定義
            var persons = new[]
            {
                new{Name="Tom",Age=17},
                new{Name="Ken",Age=46},
                new{Name="Alice",Age=18},
                new{Name="Mike",Age=19},
                new{Name="John",Age=23}
            };

            // Ageが20以上のものを選択
            var result =
                from person in persons
                where 20 <= person.Age
                select person;

            // 選択結果を列挙
            foreach (var person in result)
            {
                Console.WriteLine("Name:" + person.Name + " Age:" + person.Age);
            }
        }
    }
}

23-27行目がLINQで記述した部分となる。
SQLに似ているが、記述する順序が若干異なっている。
SQLならば「SELECT * FROM persons WHERE 20 <= Age」のような感じになるだろう。 上のLINQの部分を読み下してみると、 「personという変数でpersonsを列挙する。 条件はAgeが20以上のデータとする。 抽出するのはpersonである。」 という感じだろうか・・・。 プログラムを実行すると以下のようになる。
上の例のLINQではデータ全てを抽出した形だが、
selectの部分を変えると抽出するデータを絞ることもできる。
例えば、以下のようにすると、データ中のNameという部分だけ抽出される。

// 名前だけ全て表示
foreach (var name in
	from person in persons select person.Name)
{
	Console.WriteLine("Name:" + name);
}

SQLならば「SELECT Name FROM persons」のようになるだろう。
23行目以降をこのコードに書き換えて実行すると以下のようになる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です