LINQを利用したプログラムを紹介します。
LINQは .NET Framework 環境で標準化された手法でデータの問い合わせをするための言語です。
クエリ式の場合は以下が基本的な書式となります。
where, orderby は省略可能なため、以下の書式も利用できます。
下図のUIを作成します。
下記のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SimpleLinq
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int[] data = new int[10] { 10, 2, 4, 1, 9, 3, 8, 12, 15, 5 };
var query = from i in data where i > 5 select i;
foreach (int n in query) {
textBox1.Text += string.Format("{0:d}\r\n", n);
}
}
}
}
下記コードにて、int型の配列を作成します。初期値も設定します。
int[] data = new int[10] { 10, 2, 4, 1, 9, 3, 8, 12, 15, 5 };
LINQのクエリを用い、先に作成したdata配列から問い合わせ(検索)をします。
今回のコードは data 配列の要素をiとして、iの値が5以上の要素を取得するLINQになります。問い合わせの結果は query変数に代入されます。
var query = from i in data where i > 5 select i;
foreachループを用いて、query変数の値をテキストボックスに表示します。
foreach (int n in query) {
textBox1.Text += string.Format("{0:d}\r\n", n);
}
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。テキストボックスに下図のテキストが表示されます。data配列の要素で、5以上の要素の値がテキストボックスに表示されていることが確認できます。
先に紹介したSQLライクなLINQの式はクエリ構文と呼ばれる書式です。LINQではクエリ構文以外にメソッド構文と呼ばれる書式も利用できます。メソッド構文を利用したプログラムコードを紹介します。
下図のUIを作成します。Windowsフォームに複数行のTextBoxとButtonを配置します。
下記のコードを記述します。[button1]のクリックイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SimpleLinq
{
public partial class FormSimpleMethodBasedSyntax : Form
{
public FormSimpleMethodBasedSyntax()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int[] data = new int[10] { 10, 2, 4, 1, 9, 3, 8, 12, 15, 5 };
var query = data.Where(i => i>5);
foreach (int n in query) {
textBox1.Text += string.Format("{0:d}\r\n", n);
}
}
}
}
下記のLINQの式
var query = data.Where(i => i>5);
は下記のクエリ構文のLINQと同等となります。
メソッド構文では、IEnumerableを継承しているEnumerableオブジェクトのメソッドを呼び出して処理を実行します。EnumerableオブジェクトにはLINQで用いられるWhereメソッド、Joinメソッド、OrderByメソッドなどが用意されています。
var query = from i in data where i > 5 select i;
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。data 配列の値で5より大きい値がテキストボックスに表示されます。