Hello, LINQ World!

Posted on 4月 8th, 2012 by cx20

LINQ

LINQ(Language Integrated Query : 統合言語クエリ)は、.NET 言語から DBMS や XML にアクセスする為の汎用クエリ機能である。
LINQ プロバイダとして、以下のようなものがある。

LINQ プロバイダ 説明
LINQ to SQL SQL Server
LINQ to XML XML ドキュメント
LINQ to Dataset ADO.NET データセット
LINQ to Objects .NET コレクション、ファイル、文字列など

ソースコード(C# + LINQ to Objects)

using System;
using System.Linq;
using System.Collections.Generic;
 
class Record
{
    public string Message;
    public Record(string message)
    {
        this.Message = message;
    }
}
 
class Hello
{
    static void Main(string[] args)
    {
        Record[] records = new Record[]
        {
            new Record("Hello, LINQ World!")
        };
 
        IEnumerable<Record> query =
            from n in records
            select n;
 
        foreach (Record r in query)
        {
            Console.WriteLine(r.Message);
        }
    }
}

ソースコード(C# + LINQ to SQL)

/**
-- <事前準備>
-- 1. テーブル作成
CREATE TABLE HELLO
(
    ID      INT         NOT NULL,
    MESSAGE VARCHAR(50) NULL,
    PRIMARY KEY (ID)
);
-- 2. データ投入
INSERT HELLO ( ID, MESSAGE ) VALUES ( 1, 'Hello, LINQ World' );
-- 3. データ表示
SELECT * FROM HELLO;
-- ------------------
ID MESSAGE
-- ------------------
 1 Hello, LINQ World!
-- ------------------
*/
 
using System;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.Mapping;
 
public class HelloDataContext : DataContext
{
    public HelloDataContext(string connectionString) : base(connectionString) { }
    public Table<HelloTable> Hello;
}
 
[Table(Name = "Hello")]
public class HelloTable
{
    [Column(IsPrimaryKey = true)]
    public int Id;
    [Column]
    public string Message;
}
 
class Hello
{
    static void Main(string[] args)
    {
        string conStr = "SERVER=(local);"
            + "DATABASE=Hello;"
            + "UID=sa;"
            + "PWD=P@ssW0rd";
        var db = new HelloDataContext( conStr );
        var q = 
            from h in db.Hello
            select h;
        foreach (var h in q)
        {
            Console.WriteLine(h.Message);
        }
    }
}

ソースコード(VB.NET + LINQ to SQL)

''' -- <事前準備>
''' -- 1. テーブル作成
''' CREATE TABLE HELLO
''' (
'''     ID      INT         NOT NULL,
'''     MESSAGE VARCHAR(50) NULL,
'''     PRIMARY KEY (ID)
''' );
''' -- 2. データ投入
''' INSERT HELLO ( ID, MESSAGE ) VALUES ( 1, 'Hello, LINQ World' );
''' -- 3. データ表示
''' SELECT * FROM HELLO;
''' -- ------------------
''' ID MESSAGE
''' -- ------------------
'''  1 Hello, LINQ World!
''' -- ------------------
 
Imports System
Imports System.Linq
Imports System.Data.Linq
Imports System.Data.Linq.Mapping
 
Public Class HelloDataContext 
    Inherits DataContext
    Public Sub New( ByVal connectionString As String )
        MyBase.New(connectionString)
    End Sub
    Public Hello As Table( Of HelloTable )
End Class
 
<Table(Name := "Hello")> _
Public Class HelloTable
    <Column(IsPrimaryKey := True)> _
    Public Id As Integer
    <Column()> _
    Public Message As String
End Class
 
Class Hello
    Shared Sub Main()
        Dim conStr As String = "SERVER=(local);" _
            & "DATABASE=Hello;" _
            & "UID=sa;" _
            & "PWD=P@ssW0rd"
        Dim db = New HelloDataContext( conStr )
 
        Dim q = 
            from h In db.Hello
            Select h
 
        For Each h In q
            Console.WriteLine(h.Message)
        Next
    End Sub
End Class

コンパイル方法(C# + LINQ to Objects)

C:¥> csc Hello.cs

コンパイル方法(C# + LINQ to SQL)

C:¥> csc Hello.cs

コンパイル方法(VB.NET + LINQ to SQL)

C:¥> vbc Hello.vb

実行結果

Hello, LINQ World!

Tags:

Categories: .NET, library, LINQ

コメントを残す

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

WP-SpamFree by Pole Position Marketing