次の方法で共有


方法 : LINQ クエリ結果を特定の型で返す (Visual Basic)

更新 : 2007 年 11 月

統合言語クエリ (LINQ: Language-Integrated Query) を使用すると、データベース情報へのアクセスとクエリの実行を容易に行うことができます。既定では、LINQ クエリは、オブジェクトのリストを匿名型として返します。Select 句を使用することで、クエリが特定の型のリストを返すように指定することもできます。

SQL Server データベースに対するクエリを実行し、結果を特定の名前付きの型として表す新しいアプリケーションの作成方法を、次の例に示します。詳細については、「匿名型」および「Select 句 (Visual Basic)」を参照してください。

このトピックに示す例では、Northwind サンプル データベースを使用します。開発用コンピュータに Northwind サンプル データベースがインストールされていない場合は、Microsoft ダウンロード センター の Web サイトからダウンロードできます。手順については、「サンプル データベースのダウンロード (LINQ to SQL)」を参照してください。

Bb918115.alert_note(ja-jp,VS.90).gifメモ :

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

データベースへの接続を作成するには

  1. Visual Studio で、[表示] メニューの [サーバー エクスプローラ] または [データベース エクスプローラ] をクリックして、サーバー エクスプローラまたはデータベース エクスプローラを開きます。

  2. サーバー エクスプローラまたはデータベース エクスプローラで、[データ接続] を右クリックし、[接続の追加] をクリックします。

  3. Northwind サンプル データベースへの有効な接続を指定します。

LINQ to SQL ファイルを含むプロジェクトを追加するには

  1. Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。プロジェクトの種類として、Visual Basic の [Windows フォーム アプリケーション] をクリックします。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。[LINQ to SQL クラス] 項目テンプレートをクリックします。

  3. ファイルに northwind.dbml という名前を付けます。[追加] をクリックします。オブジェクト リレーショナル デザイナ (O/R デザイナ) で northwind.dbml ファイルが開かれます。

照会するテーブルを O/R デザイナに追加するには

  1. サーバー エクスプローラまたはデータベース エクスプローラで、Northwind データベースへの接続を展開します。[Tables] フォルダを展開します。

    O/R デザイナを閉じている場合は、前に追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。

  2. Customers テーブルをクリックし、デザイナの左ペインにドラッグします。

    デザイナによって、プロジェクト用の新しい Customer オブジェクトが作成されます。クエリ結果は、Customer 型または作成した型で返すことができます。このサンプルでは、後半の手順で新しい型を作成し、クエリ結果をその型として返します。

  3. 変更を保存し、デザイナを閉じます。

  4. プロジェクトを保存します。

データベースを照会するコードを追加し、結果を表示するには

  1. [ツールボックス] から、DataGridView コントロールを、プロジェクトの既定の Windows フォームである Form1 にドラッグします。

  2. Form1 クラスを変更するために、Form1 をダブルクリックします。

  3. Form1 クラスの End Class ステートメントの後ろに次のコードを追加します。このコードは、このサンプルのクエリ結果を保持する CustomerInfo 型を作成します。

    Public Class CustomerInfo
      Private _CompanyName As String
      Private _ContactName As String
    
      Public Property CompanyName() As String
        Get
          Return _CompanyName
        End Get
        Set(ByVal value As String)
          _CompanyName = value
        End Set
      End Property
    
      Public Property ContactName() As String
        Get
          Return _ContactName
        End Get
        Set(ByVal value As String)
          _ContactName = value
        End Set
      End Property
    End Class
    
  4. O/R デザイナにテーブルを追加すると、デザイナによって DataContext オブジェクトがプロジェクトに追加されます。このオブジェクトには、これらのテーブルにアクセスするために必要なコードで、個々のオブジェクトと各テーブルのコレクションにアクセスするためのコードが格納されます。プロジェクトの DataContext オブジェクトには、.dbml ファイルの名前に基づいて名前が付けられます。このプロジェクトの場合、DataContext オブジェクトの名前は northwindDataContext になります。

    コード内に DataContext のインスタンスを作成し、O/R デザイナで指定したテーブルを照会できます。

    Form1 クラスの Load イベントに次のコードを追加します。このコードは、データ コンテキストのプロパティとして公開されたテーブルを照会します。クエリの Select 句によって、クエリ結果の各項目の型として、匿名型の代わりに新しい CustomerInfo 型が作成されます。

    Dim db As New northwindDataContext
    
    Dim customerList = _
      From cust In db.Customers _
      Where cust.CompanyName.StartsWith("L") _
      Select New CustomerInfo With {.CompanyName = cust.CompanyName, _
                                    .ContactName = cust.ContactName}
    
    DataGridView1.DataSource = customerList
    
  5. F5 キーを押してプロジェクトを実行し、結果を確認します。

参照

処理手順

チュートリアル : LINQ to SQL クラスの作成 (O/R デザイナ)

概念

DataContext メソッド (O/R デザイナ)

その他の技術情報

LINQ (Visual Basic)

クエリ (Visual Basic)

LINQ to SQL