在 Visual Basic 速成版中使用 LINQ

更新:2007 年 11 月

应用程序经常使用 SQL 数据库或 XML 文档中的数据。作为开发人员,您过去经常需要学习一种辅助语言(如 SQL 或 XQuery)以使用这些数据。语言集成查询 (LINQ) 将查询功能引入 Visual Basic 语言本身,使您不必再学习另一种完全不同的查询语言。现在,您可以将现有的 Visual Basic 知识与其他一些关键字和概念结合使用,来查询 SQL 数据库、ADO.NET 数据集、XML 文档以及任何实现 IEnumerable 接口的 .NET Framework 集合类。

使用 LINQ 的优点

  • 熟悉的查询编写语法

  • 针对语法错误和类型安全的编译时检查

  • 改进的调试器支持

  • IntelliSense 支持

  • 直接处理 XML 元素的能力,而不是像 W3C 文档对象模型 (DOM) 那样需要创建容器 XML 文档

  • 强大的内存中 XML 文档修改功能,但比 XPath 或 XQuery 更容易使用

  • 强大的筛选、排序和分组功能

  • 用于处理各种数据源中采用各种格式的数据的一致模型

编写 LINQ 查询

无论您是使用 ADO.NET 数据集、SQL 数据库、.NET Framework 集合还是 XML 文档,LINQ 查询的基本结构都是相同的。查询表达式以 From 子句开头,后面跟查询子句,如 Where 和 Select。完整的表达式存储在查询变量中,可不限次数地执行或修改。查询表达式语法与 SQL 的语法类似。例如,可以使用下面的语法编写一个 LINQ 查询,该查询返回 students 数据库中所有主修 science 的学生:

Dim StudentQuery = From student in studentApp.students 
    Where student.Major = "Science" _
    Select student

有关更多信息,请参见查询 (Visual Basic)编写第一个 LINQ 查询 (Visual Basic)

LINQ 查询分为三个基本阶段。获取数据源,定义查询表达式,然后运行查询。有关更多信息,请参见 编写第一个 LINQ 查询 (Visual Basic)

LINQ to Objects

术语“LINQ to Objects”指使用 LINQ 查询内存中支持 IEnumerable 的数据结构。有关更多信息,请参见 LINQ to Objects

LINQ to SQL

使用 LINQ to SQL 可通过强类型对象层(该对象层是您使用 O/R 设计器创建的)访问 SQL Server 和 SQL Server Express 数据库。

可以使用 O/R 设计器将 LINQ to SQL 类映射到数据库中的表,然后编写 LINQ 查询将数据绑定到应用程序中的控件。例如,下面的 LINQ 查询将一个 LINQ 查询的结果(来自美国的所有客户)绑定到 DataGridView 控件的绑定源。

Dim CustomersQuery = From customers in NorthwindSampleDataContext1.Customers _
    Where customers.Country = "US" _
    Select customers

CustomerBindingSource.DataSource = CustomersQuery

有关更多信息,请参见 LINQ to SQLO/R 设计器概述创建 LINQ to SQL 类:使用 O/R 设计器使用 LINQ 将数据绑定到控件

说明:

O/R 设计器当前不支持 SQL Server Compact 3.5 数据库。有关如何获取 SQL Server Express Edition 的信息,请参见如何:安装示例数据库中的“获取 SQL Server Express Edition”部分。

LINQ to DataSet

DataSet 用于将数据绑定到应用程序中的控件。可以使用 DataSet 创建要用于应用程序的数据脱机缓存(可以包含多个数据源的子集),而不是直接连接到数据库。当应用程序联机时,可以使用 DataSet 中的更改更新数据库。

LINQ to DataSet 使基于缓存数据的查询比可用于 DataSet 的筛选和排序方法更加快速和简单。有关更多信息,请参见 LINQ to DataSet

LINQ to XML

使用 LINQ to XML 可以通过 LINQ 查询表达式轻松地创建和修改 XML 文件,而不必学习 XPath 或 XQuery。LINQ to XML 是用于 XML 的新的内存中 API,它使用现代编程构造而不是 W3C DOM。有关更多信息,请参见 Visual Basic 中的 LINQ to XML 概述将 XML 直接包含在代码中:使用 XML 文本Visual Basic 中的语言集成轴 (LINQ to XML)

请参见

概念

入门 (LINQ to SQL)

其他资源

Visual Basic 中的 LINQ 入门

入门 (LINQ to DataSet)

入门 (LINQ to XML)