読者です 読者をやめる 読者になる 読者になる

Code Log

プログラミングの勉強メモを残していきます。

C# LINQの基礎


<スポンサーリンク>

LINQとは、日本語で統合言語クエリといいます。
Language-integrated queryの略です。

LINQを使うことで、DBにSQLを発行するような処理と同じような処理が、C#をの言語構文を利用して行うことができるようになります。
LINQ対応のデータソースに対して、直接クエリを行うことができるわけです。

LINQを使うことで、どのようなデータソースに対しても統一したクエリ構文を使うことができます。
LINQはさまざまなデータに対して統一したアクセス方法を提供してくれます。

サンプルを見てみましょう。

static void Main(string[] args)
{
    int[] nums = { -1, 2, 3, 5, 10, -3, 7 };

    var positiveNums = from num in nums
                       where num > 0
                       select num;

    foreach (int n in positiveNums)
        Console.WriteLine(n);

    Console.ReadLine();
}

これを実行すると、正の数値だけが表示されます。

from~select numまでがクエリです。
セミコロンで閉じるのはクエリの最後の部分になっています。

全てのクエリ式はfromから始まります。

from 範囲変数 in データソース

範囲変数とは、データソースから得られる各要素の1つを表す変数です。

where 条件式

whereはクエリによって要素を抽出する際の、各要素が満たすべき抽出条件を指定します。

条件式にはbool型の評価結果を返す四季を指定します。
where句はデータソースから特定の条件を満たす要素を取り出すためのフィルタの役割を果たします。

foreachループを実行することで、クエリのルールが実行されます。
foreachループを繰り返すごとに、クエリ結果の要素が1つずつ変数に格納されます。

from~select numまでは、クエリのルールを定義して、それを「positiveNums」という変数に格納しただけに過ぎません。
foreachを実行することで、クエリを実行することができます。

同じクエリを2回実行することも可能です。

static void Main(string[] args)
{
    int[] nums = { -1, 2, 3, 5, 10, -3, 7 };

    var positiveNums = from num in nums
                       where num > 0
                       select num;

    Console.WriteLine("-------first--------");
    foreach (int n in positiveNums)
        Console.WriteLine(n);

    nums[1] = -100;

    Console.WriteLine("-------second-------");

    foreach (int n in positiveNums)
        Console.WriteLine(n);

    Console.ReadLine();
}


<参考文献>

独習C# 第3版

独習C# 第3版

  • 作者: ハーバート・シルト,エディフィストラーニング株式会社矢嶋聡
  • 出版社/メーカー: 翔泳社
  • 発売日: 2010/12/03
  • メディア: 大型本
  • 購入: 5人 クリック: 55回
  • この商品を含むブログ (6件) を見る