[LINQ] クエリ式の基本(from, select)

クエリ式は SQLに似ていますが、selectではなく fromから始まるのが特徴です。

これは式を上から順番に理解できるようにするためです。


■ from句とselect句

クエリ式では最初にデータの取得元を決定する必要があります。

そこで使用するのが from句 です。

from句では、データソース(データ取得元)とそのデータをコピーする先となる変数を指定する必要があります。

コピーされたデータの中から要素を取り出すには select句を使用します。

構文は以下の通りです。

VBの例

From 変数 In データソース
Select 取得するデータ

C#の例

from 変数 in データソース
select 取得するデータ

以下に使用例を示します。

データソースを numbers、 データのコピー先を変数 num にしています。

num に入ったデータを select で取り出し、その結果を変数 data に代入しています。

その後、foreach(VB.NETは For Each)で data からデータを取り出して出力しています。

VBの例

Dim numbers() As Integer = {3, 5, 2, 1, 9, 8, 7}

Dim data = From num In numbers
           Select num

For Each item In data
    Console.WriteLine(item)
Next

C#の例

int[] numbers = { 3, 5, 2, 1, 9, 8, 7 };

var data = from num in numbers
           select num;

foreach (var item in data)
{
    Console.WriteLine(item);
}

上記は、データソースである numbers のデータが num にコピーされ、それを1つずつ取り出しているだけなので、結果は下図のようになります。

実行例1


もう一つ例を示します。

以下は、クエリ式でデータソースから2つのデータを取り出す例です。

Select句に name と name.Length を指定することで、花の名前とその文字列長を取り出しています。

VBの例

Dim flowers As String() = {"Rose", "Tulip", "Sunflower"}

Dim data = From name In flowers
           Select name, name.Length

For Each item In data
    Console.WriteLine(String.Format("{0} の文字数は {1} です。", item.name, item.Length))
Next

C#の例

string[] flowers = { "Rose", "Tulip", "Sunflower" };

var data = from name in flowers
           select new { name, name.Length };

foreach (var item in data)
{
    Console.WriteLine(string.Format("{0} の文字数は {1} です。",item.name, item.Length));
}

上記の実行結果は下図の通りです。
実行例2

コメントを残す

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