次の方法で共有


方法: LINQ を使用してデータをカウント、合計、または平均する (Visual Basic)

Language-Integrated クエリ (LINQ) を使用すると、データベース情報に簡単にアクセスし、クエリを実行できます。

次の例は、SQL Server データベースに対してクエリを実行する新しいアプリケーションを作成する方法を示しています。 このサンプルでは、Aggregate 句と Group By 句を使用して、結果をカウント、合計、および平均化します。 詳細については、「集計句 」および「グループ化句 」を参照してください。

この記事の例では、Northwind サンプル データベースを使用します。 データベースを取得するには、「サンプル データベースのダウンロード」参照してください。

手記

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

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

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

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

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

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

  1. Visual Studio の [ファイル] メニューで、[新しい] にカーソルを合わせてから、[プロジェクト] をクリックします。 プロジェクトの種類として Visual Basic Windows フォーム アプリケーション を選択します。

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

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

クエリするテーブルを O/R デザイナーに追加するには

  1. Server Explorer/Database Explorerで、Northwind データベースへの接続を展開します。 テーブル フォルダーを展開します。

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

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

    デザイナーは、プロジェクトの新しい Customer オブジェクトと Order オブジェクトを作成します。 デザイナーがテーブル間のリレーションシップを自動的に検出し、関連オブジェクトの子プロパティを作成します。 たとえば、IntelliSense は、Customer オブジェクトに、その顧客に関連するすべての注文の Orders プロパティがあることを示します。

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

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

データベースにクエリを実行して結果を表示するコードを追加するには

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

  2. Form1 をダブルクリックして、フォームの Load イベントにコードを追加します。

  3. O/R デザイナーにテーブルを追加すると、デザイナーによってプロジェクトの DataContext オブジェクトが追加されました。 このオブジェクトには、これらのテーブルにアクセスし、各テーブルの個々のオブジェクトとコレクションにアクセスするために必要なコードが含まれています。 プロジェクトの DataContext オブジェクトは、.dbml ファイルの名前に基づいて名前が付けられます。 このプロジェクトでは、DataContext オブジェクトの名前は northwindDataContextです。

    コードで DataContext のインスタンスを作成し、O/R デザイナーで指定されたテーブルに対してクエリを実行できます。

    Load イベントに次のコードを追加して、DataContext のプロパティとして公開されているテーブルに対してクエリを実行し、結果をカウント、合計、平均します。 このサンプルでは、Aggregate 句を使用して 1 つの結果を照会し、Group By 句を使用してグループ化された結果の平均を表示します。

    Dim db As New northwindDataContext
    Dim msg = ""
    
    Dim londonCustomerCount = Aggregate cust In db.Customers
                              Where cust.City = "London"
                              Into Count()
    msg &= "Count of London Customers: " & londonCustomerCount & vbCrLf
    
    Dim averageOrderCount = Aggregate cust In db.Customers
                            Where cust.City = "London"
                            Into Average(cust.Orders.Count)
    msg &= "Average number of Orders per customer: " &
           averageOrderCount & vbCrLf
    
    Dim venezuelaTotalOrders = Aggregate cust In db.Customers
                               Where cust.Country = "Venezuela"
                               Into Sum(cust.Orders.Count)
    msg &= "Total number of orders from Customers in Venezuela: " &
           venezuelaTotalOrders & vbCrLf
    
    MsgBox(msg)
    
    Dim averageCustomersByCity = From cust In db.Customers
                                 Group By cust.City
                                 Into Average(cust.Orders.Count)
                                 Order By Average
    
    DataGridView1.DataSource = averageCustomersByCity
    
    'Another way to grab the count and sum
    
    londonCustomerCount = (From cust in db.Customers
                           Where cust.City = "London").Count()
    
    venezuelaTotalOrders = (From cust in db.Customers
                            Where cust.Country = "Venezuela"
                            Select cust.Orders).Sum()
    
  4. F5 キーを押してプロジェクトを実行し、結果を表示します。

関連項目