方法: LINQ を使用してクエリ結果をフィルター処理する (Visual Basic)
Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。
次の例は、SQL Server データベースに対してクエリを実行し、Where
句を使用して特定の値で結果をフィルター処理する新しいアプリケーションを作成する方法を示しています。 詳細については、「Where 句」を参照してください。
この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード 参照してください。
手記
次の手順では、一部の Visual Studio ユーザー インターフェイス要素の名前や場所がコンピューターに異なる場合があります。 これらの要素は、使用している Visual Studio エディションと使用する設定によって決まります。 詳細については、「IDEのカスタマイズ」を参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューの [サーバー エクスプローラー] /[データベース エクスプローラー]クリックして、Server Explorer/Database Explorer を開きます。
[サーバー エクスプローラー/][データベース エクスプローラー] で [データ接続] を右クリックし、[接続の追加] をクリックします。
Northwind サンプル データベースへの有効な接続を指定します。
LINQ to SQL ファイルを含むプロジェクトを追加するには
Visual Studio で、[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。 プロジェクトの種類として Visual Basic Windows フォーム アプリケーション を選択します。
[プロジェクト] メニューの [新しい項目の追加] クリックします。 LINQ to SQL クラス 項目テンプレートを選択します。
ファイルに
northwind.dbml
名前を付けます。 追加をクリックします。 northwind.dbml ファイルのオブジェクト リレーショナル デザイナー (O/R デザイナー) が開きます。
クエリするテーブルを O/R デザイナーに追加するには
Server Explorer/Database Explorerで、Northwind データベースへの接続を展開します。 テーブル フォルダーを展開します。
O/R デザイナーを閉じた場合は、先ほど追加した northwind.dbml ファイルをダブルクリックして再度開くことができます。
Customers テーブルをクリックし、デザイナーの左側のウィンドウにドラッグします。 Orders テーブルをクリックし、デザイナーの左側のウィンドウにドラッグします。
デザイナーは、プロジェクトの新しい
Customer
オブジェクトとOrder
オブジェクトを作成します。 デザイナーがテーブル間のリレーションシップを自動的に検出し、関連オブジェクトの子プロパティを作成します。 たとえば、IntelliSense は、Customer
オブジェクトに、その顧客に関連するすべての注文のOrders
プロパティがあることを示します。変更内容を保存し、デザイナーを閉じます。
プロジェクトを保存します。
データベースにクエリを実行して結果を表示するコードを追加するには
ツールボックスから、DataGridView コントロールをプロジェクトの既定の Windows フォーム Form1 にドラッグします。
Form1 をダブルクリックして、フォームの
Load
イベントにコードを追加します。O/R デザイナーにテーブルを追加すると、デザイナーによってプロジェクトの DataContext オブジェクトが追加されました。 このオブジェクトには、各テーブルの個々のオブジェクトとコレクションに加えて、これらのテーブルにアクセスするために必要なコードが含まれています。 プロジェクトの DataContext オブジェクトは、.dbml ファイルの名前に基づいて名前が付けられます。 このプロジェクトでは、DataContext オブジェクトの名前は
northwindDataContext
です。コードで DataContext のインスタンスを作成し、O/R デザイナーで指定されたテーブルに対してクエリを実行できます。
Load
イベントに次のコードを追加して、データ コンテキストのプロパティとして公開されているテーブルに対してクエリを実行します。 クエリは結果をフィルター処理し、London
に配置されている顧客のみを返します。Dim db As New northwindDataContext Dim customers_London = From cust In db.Customers Where cust.City = "London" Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.City, cust.Country DataGridView1.DataSource = customers_London
F5 キーを押してプロジェクトを実行し、結果を表示します。
試すことができるその他のフィルターを次に示します。
Dim companies_H = From cust In db.Customers Where cust.Orders.Count > 0 And cust.CompanyName.StartsWith("H") Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country Dim customers_USA = From cust In db.Customers Where cust.Orders.Count > 15 And cust.Country = "USA" Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country
関連項目
.NET