如何:將 LINQ 查詢結果當做特定類型傳回 (Visual Basic)
Language-Integrated Query (LINQ) 可讓您輕鬆存取資料庫資訊並執行查詢。 根據預設,LINQ 查詢會將物件清單當做匿名型別傳回。 您也可以使用 Select
子句來指定查詢傳回特定類型清單。
下列範例示範如何建立可針對 SQL Server 資料庫執行查詢並將結果投影為特定具名類型的新應用程式。 如需詳細資訊,請參閱匿名型別和 Select 子句。
本主題中的範例會使用 Northwind 範例資料庫。 如果您的開發電腦上沒有這個資料庫,則可以從 Microsoft 下載中心下載。 如需相關指示,請參閱下載範例資料庫。
注意
在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化。
建立與資料庫的連線
在 Visual Studio 中,按一下 [檢視] 功能表上的 [伺服器總管]/[資料庫總管],以開啟 [伺服器總管]/[資料庫總管]。
在 [伺服器總管]/[資料庫總管] 中,以滑鼠右鍵按一下 [資料連線],然後按一下 [新增連線]。
指定 Northwind 範例資料庫的有效連線。
新增包含 LINQ to SQL 檔案的專案
在 Visual Studio 的 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。 將 Visual Basic 的 [Windows Forms 應用程式] 選為專案類型。
在 [專案] 功能表上,按一下 [加入新項目]。 選取 [LINQ to SQL 類別] 項目範本。
將檔案命名為
northwind.dbml
。 按一下新增。 隨即會針對 northwind.dbml 檔案開啟物件關聯式設計工具 (O/R 設計工具)。
將要查詢的資料表新增至 O/R 設計工具
在 [伺服器總管]/[資料庫總管] 中,展開與 Northwind 資料庫的連線。 展開 [資料表] 資料夾。
如果您已關閉 O/R 設計工具,您可以按兩下稍早新增的 northwind.dbml 檔案,重新開啟設計工具。
按一下 [Customers] 資料表,並將其拖曳至設計工具的左窗格。
設計工具會為專案建立新的
Customer
物件。 您可以將查詢結果投影為Customer
類型或您所建立的類型。 此範例會在稍後的程序中建立新的類型,並將查詢結果投影為該類型。儲存變更並關閉設計工具。
儲存您的專案。
新增程式碼以查詢資料庫並顯示結果
從 [工具箱] 中,將 DataGridView 控制項拖曳至專案的預設 Windows Form (Form1)。
按兩下 Form1 以修改 Form1 類別。
在 Form1 類別的
End Class
陳述式之後,新增下列程式碼以建立CustomerInfo
類型來保存此範例的查詢結果。Public Class CustomerInfo Public Property CompanyName As String Public Property ContactName As String End Class
當您將資料表新增至 O/R 設計工具時,設計工具會將 DataContext 物件新增至您的專案。 此物件包含存取資料表以及針對各資料表存取個別物件和集合所必需的程式碼。 專案的 DataContext 物件會依據 .dbml 檔案名稱來命名。 以此專案來說,DataContext 物件會命名為
northwindDataContext
。您可以在程式碼中建立 DataContext 的執行個體,並查詢 O/R 設計工具指定的資料表。
在 Form1 類別的
Load
事件中,新增下列程式碼以查詢作為資料內容屬性公開的資料表。 查詢的Select
子句會針對查詢結果的每個項目建立新的CustomerInfo
類型,而不是匿名型別。Dim db As New northwindDataContext Dim customerList = From cust In db.Customers Where cust.CompanyName.StartsWith("L") Select New CustomerInfo With {.CompanyName = cust.CompanyName, .ContactName = cust.ContactName} DataGridView1.DataSource = customerList
按 F5 鍵執行您的專案並檢視結果。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應