HOW TO:使用 LINQ 排序查詢結果 (Visual Basic)
Language-Integrated Query (LINQ) 可讓您輕鬆地存取資料庫資訊和執行查詢。
下列範例顯示如何建立新的應用程式,而該應用程式會對 SQL Server 資料庫執行查詢,並使用 Order By 子句依照多個欄位排序結果。 每個欄位的排序順序可以是遞增順序或遞減遞增。 如需詳細資訊,請參閱 Order By 子句 (Visual Basic)。
本主題中的範例使用 Northwind 範例資料庫。 如果您的開發電腦上沒有 Northwind 範例資料庫,可以從 Microsoft 下載中心 (英文) 網站下載。 如需相關說明,請參閱Downloading Sample Databases (LINQ to SQL)。
注意事項 |
---|
您的電腦可能會在下列說明中,以不同名稱或位置顯示某些 Visual Studio 使用者介面項目。您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要建立連接至資料庫
在 Visual Studio 中,按一下 [檢視] 功能表上的 [伺服器總管]/[資料庫總管],以開啟 [伺服器總管]/[資料庫總管]。
以滑鼠右鍵按一下 [伺服器總管]/[資料庫總管] 中的 [資料連接],然後按一下 [加入連接]。
指定至 Northwind 範例資料庫的有效連接。
若要加入內含 LINQ to SQL 檔案的專案
在 Visual Studio 的 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。 選取 Visual Basic [Windows Form 應用程式] 為專案類型。
在 [專案] 功能表上,按一下 [加入新項目]。 選取 [LINQ to SQL 類別] 項目範本。
將檔案命名為 northwind.dbml。 按一下 [加入]。 系統會針對 northwind.dbml 檔案開啟物件關聯式設計工具 (O/R 設計工具)。
若要將資料表加入至 O/R 設計工具的查詢
在 [伺服器總管]/[資料庫總管] 中,展開 Northwind 資料庫的連接。 展開 [資料表] 資料夾。
如果您關閉了 O/R 設計工具,可以按兩下您稍早加入的 northwind.dbml 檔案以重新開啟。
按一下 [Customers] 資料表,將它拖曳至設計工具的左窗格。 按一下 [Orders] 資料表,將它拖曳至設計工具的左窗格。
設計工具會為您的專案建立新的 Customer 和 Order 物件。 請注意,設計工具會自動偵測資料表之間的關聯,並建立關聯物件的子屬性。 例如,IntelliSense 會顯示 Customer 物件針對與該客戶相關的所有訂單有一個 Orders 屬性。
儲存變更並關閉設計工具。
儲存您的專案。
若要加入程式碼以查詢資料庫並顯示結果
從 [工具箱] 將 DataGridView 控制項拖曳至專案的預設 Windows Form 上 (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 執行專案並檢視結果。
請參閱
工作
Walkthrough: Creating LINQ to SQL Classes (O/R Designer)
概念
DataContext Methods (O/R Designer)