クエリ式は 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つずつ取り出しているだけなので、結果は下図のようになります。
もう一つ例を示します。
以下は、クエリ式でデータソースから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)); }
Please follow and like us:
コメント