【C#】【SQL】【Linq】Linq to SQL ~入門編~

Linq to SQLについて

 Linqを使ったクエリ操作は、以下の3つの手順を踏む
 [1] データソースを取得する
 [2] クエリを作成する
 [3] クエリを実行する

サンプル

事前準備

 [1] SQL Serverにおいて、以下「サンプルテーブル」のようなテーブルを作成しておき、データを追加しておく
 [2] Visaul Studioにおいて、作成したプロジェクトを右クリックし、[追加]-[新しい項目]を選択
 [3] 事前準備[2]で作成した「Linq to SQLクラス」のアンカー「サーバーエクスプローラ」をクリック
 [4] 事前準備[1]で作成したテーブルをドラッグ&ドロップする
サンプルテーブル
【テーブル名】
person

【項目】
PersonId long
Name nvarchar(50)
Address nvarchar(100)
データ追加用SQL
INSERT INTO Person
(PersonId, Name, Address)
VALUES
(1, 'Mike', 'NY city 3Chome');

INSERT INTO Person
(PersonId, Name, Address)
VALUES
(2, 'Tom', 'London 5Chome');

INSERT INTO Person
(PersonId, Name, Address)
VALUES
(3, 'Naomi', 'Sydney 1Chome');

サンプルソース

Windows Formに、「ボタン(button1)」、「テキストボックス(textBox1、PersonId を選択できるよ用)」、「ラベル(label1、結果表示用)」を追加
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Linq; // 新規追加

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;

            // 新規で追加したDataClassを参照できるようにするために
            // DataClasses1DataContextクラスをオブジェクト化する
            var db = new DataClasses1DataContext();

            // DataClassにあるPersonテーブルにあるデータ取得のためのクエリ式作成
            var query = from n in db.person
                        where n.PersonId == Convert.ToInt64(textBox1.Text)
                        select n;
            foreach (var m in query)
            {
                result += string.Format("{0} {1} {2}"
                    , m.PersonId 
                    , m.Name
                    , m.Address);
            }

            label1.Text = result;
        }
    }
}