如何:以特定类型返回 LINQ 查询结果 (Visual Basic)
更新:2007 年 11 月
使用语言集成查询 (LINQ) 可以方便地访问数据库信息和执行查询。默认情况下,LINQ 查询以匿名类型返回对象列表。使用 Select 子句,也可以指定查询返回特定类型的列表。
下面的示例演示如何创建对 SQL Server 数据库执行查询并将结果映射为特定命名类型的新应用程序。有关更多信息,请参见匿名类型和 Select 子句 (Visual Basic)。
本主题中的示例使用 Northwind 示例数据库。如果没有在开发计算机中安装 Northwind 示例数据库,可以从 Microsoft Download Center(Microsoft 下载中心)网站下载该数据库。有关说明,请参见下载示例数据库 (LINQ to SQL)。
说明: |
---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您使用的 Visual Studio 版本及设置。有关更多信息,请参见Visual Studio 设置。 |
创建与数据库的连接
在 Visual Studio 中,通过在“视图”菜单上单击“服务器资源管理器”/“数据库资源管理器”,打开“服务器资源管理器”/“数据库资源管理器”。
在“服务器资源管理器”/“数据库资源管理器”中,右击“数据连接”,然后单击“添加连接”。
指定与 Northwind 示例数据库的有效连接。
添加包含 LINQ to SQL 文件的项目
在 Visual Studio 中的“文件”菜单上,指向“新建”,然后单击“项目”。选择 Visual Basic“Windows 窗体应用程序”作为项目类型。
在“项目”菜单上单击“添加新项”。选择“LINQ to SQL 类”项模板。
将文件命名为 northwind.dbml。单击“添加”。为 northwind.dbml 文件打开对象关系设计器(O/R 设计器)。
将要查询的表添加到 O/R 设计器
在“服务器资源管理器”/“数据库资源管理器”中,展开与 Northwind 数据库的连接。展开“表”文件夹。
如果已经关闭 O/R 设计器,可以通过双击先前添加的 northwind.dbml 文件重新将其打开。
单击 Customers 表并将它拖到设计器的左窗格上。
设计器为项目创建新的 Customer 对象。可以将查询结果映射为 Customer 类型或您创建的类型。此示例将在后面的过程中创建新类型并将查询结果映射为该类型。
保存所做的更改并关闭设计器。
保存您的项目。
添加用于查询数据库和显示结果的代码
从“工具箱”中,将 DataGridView 控件拖到项目的默认 Windows 窗体 Form1 上。
双击 Form1 以修改 Form1 类。
在 Form1 类的 End Class 语句后,添加下面的代码以创建 CustomerInfo 类型来保存此示例的查询结果。
Public Class CustomerInfo Private _CompanyName As String Private _ContactName As String Public Property CompanyName() As String Get Return _CompanyName End Get Set(ByVal value As String) _CompanyName = value End Set End Property Public Property ContactName() As String Get Return _ContactName End Get Set(ByVal value As String) _ContactName = value End Set End Property 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 运行项目并查看结果。