方法: LINQ を使用してクエリ結果を並べ替える (Visual Basic)
Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。
次の例では、SQL Server データベースに対してクエリを実行し、Order By
句を使用して複数のフィールドで結果を並べ替える新しいアプリケーションを作成する方法を示します。 各フィールドの並べ替え順序は、昇順または降順にすることができます。 詳細については、「Order By 句」を参照してください。
この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード 参照してください。
手記
次の手順では、一部の Visual Studio ユーザー インターフェイス要素の名前や場所がコンピューターに異なる場合があります。 これらの要素は、使用している Visual Studio エディションと使用する設定によって決まります。 詳細については、「IDEのカスタマイズ」を参照してください。
データベースへの接続を作成するには
Visual Studio で、[表示] メニューの [サーバー エクスプローラー] /[データベース エクスプローラー]クリックして、Server Explorer/Database Explorer を開きます。
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
イベントに次のコードを追加して、データ コンテキストのプロパティとして公開されているテーブルに対してクエリを実行し、結果を並べ替えます。 クエリでは、顧客の注文数で結果が降順に並べ替えられます。 同じ数の注文を持つ顧客は、会社名で昇順に並べ替えられます (既定)。Dim db As New northwindDataContext Dim q = From cust In db.Customers Where cust.Orders.Count > 0 Select cust.CustomerID, cust.CompanyName, OrderCount = cust.Orders.Count, cust.Country Order By OrderCount Descending, CompanyName DataGridView1.DataSource = q
F5 キーを押してプロジェクトを実行し、結果を表示します。
関連項目
.NET