如何:使用 LINQ 尋找查詢結果中的最小或最大值 (Visual Basic)

Language-Integrated Query (LINQ) 可讓您輕鬆存取資料庫資訊並執行查詢。

下列範例示範如何建立新的應用程式,以對 SQL Server 資料庫執行查詢。 此範例會使用 AggregateGroup By 子句來判斷結果的最小值和最大值。 如需詳細資訊,請參閱 Aggregate 子句Group By 子句

本主題中的範例會使用 Northwind 範例資料庫。 如果您的開發電腦上沒有這個資料庫,則可以從 Microsoft 下載中心下載。 如需相關指示,請參閱下載範例資料庫

注意

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

建立資料庫的連線

  1. 在 Visual Studio 中,按一下 [檢視] 功能表中的 [伺服器總管]/[資料庫總管],開啟 [伺服器總管]/[資料庫總管]

  2. 在 [伺服器總管]/[資料庫總管] 中,以滑鼠右鍵按一下 [資料連線],然後按一下 [新增連線]

  3. 指定 Northwind 範例資料庫的有效連線。

新增包含 LINQ to SQL 檔案的專案

  1. 在 Visual Studio 的 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。 將 Visual Basic 的 [Windows Forms 應用程式] 選為專案類型。

  2. 在 [專案] 功能表上,按一下 [加入新項目]。 選取 [LINQ to SQL 類別] 項目範本。

  3. 將檔案命名為 northwind.dbml。 按一下新增。 隨即會為 northwind.dbml 開啟物件關聯式設計工具 (O/R 設計工具)。

將資料表新增至 O/R 設計工具查詢

  1. 在 [伺服器總管]/[資料庫總管] 中,展開與 Northwind 資料庫的連線。 展開 [資料表] 資料夾。

    如果您已關閉 O/R 設計工具,您可以按兩下稍早新增的 northwind.dbml 檔案,重新開啟設計工具。

  2. 按一下 [Customers] 資料表,並將其拖曳至設計工具的左窗格。 按一下 [Orders] 資料表,並將其拖曳至設計工具的左窗格。

    設計工具會為您的專案建立新的 CustomerOrder 物件。 請注意,設計工具會自動偵測資料表之間的關聯性,並為相關物件建立子屬性。 例如,IntelliSense 會顯示 Customer 物件具備 Orders 屬性,適用於與該客戶相關的所有訂單。

  3. 儲存變更並關閉設計工具。

  4. 儲存您的專案。

新增程式碼以查詢資料庫並顯示結果

  1. 從 [工具箱] 中,將 DataGridView 控制項拖曳至專案的預設 Windows Form (Form1)。

  2. 按兩下 Form1,將程式碼新增至表單的 Load 的事件。

  3. 當您將資料表新增至 O/R 設計工具時,設計工具會為您的專案新增 DataContext 物件。 此物件包含存取那些資料表以及針對各個資料表存取個別物件和集合所需的程式碼。 專案的 DataContext 物件會依據 .dbml 檔案名稱來命名。 以此專案來說,DataContext 物件會命名為 northwindDataContext

    您可以在程式碼中建立 DataContext 的執行個體,並查詢 O/R 設計工具指定的資料表。

    將下列程式碼新增至 Load 事件。 此程式碼會查詢公開為資料內容屬性的資料表,並判斷結果的最小值和最大值。 此範例會使用 Aggregate 子句來查詢單一結果,並使用 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
    
  4. F5 鍵執行您的專案並檢視結果。

另請參閱