方法: LINQ を使用してクエリ結果の最小値または最大値を検索する (Visual Basic)
Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。
次の例は、SQL Server データベースに対してクエリを実行する新しいアプリケーションを作成する方法を示しています。 このサンプルでは、Aggregate
句と Group By
句を使用して、結果の最小値と最大値を決定します。 詳細については、「Aggregate 句」および「Group By 句」を参照してください。
この記事の例では、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
イベントに次のコードを追加します。 このコードは、データ コンテキストのプロパティとして公開されているテーブルに対してクエリを実行し、結果の最小値と最大値を決定します。 このサンプルでは、Aggregate
句を使用して 1 つの結果を照会し、Group By
句を使用してグループ化された結果の平均を表示します。Dim db As New northwindDataContext Dim minimumOrders = Aggregate cust In db.Customers Where cust.City = "London" Into Min(cust.Orders.Count) MsgBox("Minimum Orders from a London Customer: " & minimumOrders) Dim maximumOrdersByCountry = From cust In db.Customers Group By cust.Country Into MaxOrders = Max(cust.Orders.Count) DataGridView1.DataSource = maximumOrdersByCountry
F5 押してプロジェクトを実行し、結果を表示します。
関連項目
.NET