方法: 特定の型での LINQ クエリ結果の取得 (Visual Basic)
統合言語クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスしてクエリを実行できます。 既定では、LINQ クエリは、オブジェクトの一覧を匿名型として返します。 また、Select
句を使用して、クエリが特定の型の一覧を返すように指定することもできます。
次の例は、SQL Server データベースに対してクエリを実行し、特定の名前付きの型として結果を射影する新しいアプリケーションの作成方法を示しています。 詳細については、「匿名型」および「Select 句」を参照してください。
このトピックの例では、Northwind サンプル データベースを使用します。 開発用コンピューターにこのデータベースがない場合は、Microsoft ダウンロード センターからダウンロードできます。 手順については、「サンプル データベースのダウンロード」を参照してください。
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「IDE をカスタマイズする」をご覧ください。
データベースへの接続を作成するには
Visual Studio で、 [表示] メニューの [サーバー エクスプローラー]/[データベース エクスプローラー] をクリックして、 [サーバー エクスプローラー]/[データベース エクスプローラー] を開きます。
[サーバー エクスプローラー]/[データベース エクスプローラー] で [データ接続] を右クリックし、 [接続の追加] をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを含むプロジェクトを追加するには
Visual Studio で、 [ファイル] メニューの [新規作成] をポイントし、 [プロジェクト] をクリックします。 プロジェクト タイプとして Visual Basic [Windows フォーム アプリケーション] を選択します。
[プロジェクト] メニューの [新しい項目の追加] をクリックします。 [LINQ to SQL クラス] 項目テンプレートを選択します。
そのファイルに
northwind.dbml
という名前を付けます。 [追加] をクリックします。 オブジェクト リレーショナル デザイナー (O/R デザイナー) が northwind.dbml ファイル用に開きます。
O/R デザイナーにクエリを実行するテーブルを追加するには
[サーバー エクスプローラー]/[データベース エクスプローラー] で、Northwind データベースへの接続を展開します。 [テーブル] フォルダーを展開します。
O/R デザイナーを閉じている場合は、前に追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。
Customers テーブルをクリックし、デザイナーの左ペインにドラッグします。
デザイナーによって、プロジェクトの新しい
Customer
オブジェクトが作成されます。 クエリ結果は、Customer
型として、または作成する型として射影できます。 このサンプルでは、後のプロシージャで新しい型を作成し、その型としてクエリ結果を射影します。変更を保存し、デザイナーを閉じます。
プロジェクトを保存します。
データベースに対してクエリを実行し、結果を表示するコードを追加するには
[ツールボックス] から、プロジェクトの既定の Windows フォームである Form1 に DataGridView コントロールをドラッグします。
Form1 をダブルクリックして、Form1 クラスを変更します。
Form1 クラスの
End Class
ステートメントの後に、次のコードを追加して、このサンプルのクエリ結果を保持するCustomerInfo
型を作成します。Public Class CustomerInfo Public Property CompanyName As String Public Property ContactName As String End Class
テーブルを 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
F5 キーを押してプロジェクトを実行し、結果を表示します。
関連項目
.NET