21.1 LINQ 查询概述 LINQ 可以对多种数据源和对象进行查询,如数据库、数据集、XML 文档甚至是数组,这在传统的查询语句中是很难实现的。如果有一个集合类型的值需要进行查询,则必须使用Where 等方法进行遍历,而使用LINQ 可以仿真SQL 语句的形式进行查询,极大的降低了难度。 21.1.1 准备数据源 既然LINQ 可以查询多种数据源和对象,这些对象可能是数组,可能是数据集,也可能是数据库,那么在使用LINQ 进行数据查询时首先需要准备数据源。 1.数组 数组中的数据可以被LINQ 查询语句查询,这样就省去了复杂的数组遍历。数组数据源示例代码如下所示。 string[] str = { "学习", "学习 LINQ", "好好学习", "生活很美好" }; int[] inter = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 数组可以看成是一个集合,虽然数组没有集合的一些特性,但是从另一个角度上来说可以看成是一个集合。在传统的开发过程中,如果要筛选其中包含“学习”字段的某个字符串,则需要遍历整个数组。 2.SQL Server 在数据库操作中,同样可以使用LINQ 进行数据库查询。LINQ 以其优雅的语法和面向对象的思想能够方便的进行数据库操作,为了使用LINQ 进行SQL Serv er 数据库查询,可以创建两个表,这两个表的结构如下所示。Stu dent(学生表): S_ID:学生 ID。 S_NAME:学生姓名。 S_CLASS:学生班级。 C_ID:所在班级的ID。 上述结构描述了一个学生表,可以使用SQL 语句创建学生表,示例代码如下所示。 USE [student] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Student]( [S_ID] [int] IDENTITY(1,1) NOT NULL, [S_NAME] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [S_CLASS] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, [C_ID] [int] NULL, CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ( [S_ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 510 ) ON [PRIMARY] 为了更加详细的描述一个学生所有的基本信息,就需要创建另一个表对该学生所在的班级进行描述,班级表结构如下所示。Class(班级表): C_ID:班级 ID。 C_GREAD:班级所在的年级。 C_INFOR:班级专业。 ...