什么是 LINQ?

2025年3月17日 | 阅读 7 分钟

LINQ 被称为语言集成查询,它在 .NET 3.5 和 Visual Studio 2008 中引入。LINQ 的优势在于它使 .NET 语言(如 C#、VB.NET 等)能够创建查询以从数据源中检索数据。例如,程序可能会从学生记录中获取数据或访问员工记录等。在过去几年中,此类数据存储在与应用程序不同的数据库中,您需要学习各种类型的查询语言来访问此类数据,例如 SQL、XML 等。而且,您无法使用 C# 语言或其他 .NET 语言创建查询。

为了克服此类问题,微软创建了 LINQ。它向 C# 或 .NET 语言添加了另一种功能,以创建针对任何 LINQ 兼容数据源的查询。而且,最好的部分是用于创建查询的语法是相同的,无论使用哪种数据源,这意味着在社交数据库中创建关于数据的查询的语法与用于创建存储在数组中的查询数据的语法相同,无需使用 SQL 或其他非 .NET 语言组件。您还可以将 LINQ 与 SQL、XML 记录、ADO.NET、Web 服务以及任何其他数据库一起使用。

在 C# 中,LINQ 在 System.Linq 命名空间中可用。它提供了各种类型的类和方法,这些类和方法支持 LINQ 查询。在此命名空间中

  1. Enumerable 类包含一个标准查询运算符,该运算符作用于执行 IEnumerable<T> 的对象。
  2. Queryable 类包含标准查询管理员,这些管理员作用于执行 IQueryable<T> 的对象。

例如:SQL 是一种结构化查询语言,用于保存和从数据库中恢复数据。同样,LINQ 是一种结构化查询语法。LINQ 是基本的 C#。它用于从各种类型的数据源中恢复数据,例如 XML、文档、集合、ADO.Net DataSet、Web Service、MS SQL Server 和其他数据库服务器。

What is LINQ

LINQ 的用途

  1. 创建 LINQ 的主要原因是,在 C# 3.0 之前,我们使用 for 循环、for each 循环或委托来遍历集合以跟踪特定对象,但是使用这些方法查找对象的缺点是您确实需要编写大量代码来查找对象,这需要额外的时间,并且会使您的程序不清晰。因此为了克服这些问题,引入了 LINQ,它在几行代码中执行类似的操作并使您的代码清晰;此外,您可以在不同的项目中涉及类似的代码。
  2. 它还提供编译时完全类型检查。它帮助我们在运行时识别错误,因此我们可以轻松地消除它们。
  3. LINQ 比 SQL 简单、组织良好且更高级的语言
  4. 您还可以将 LINQ 与 C# 数组和集合一起使用。它为您提供了另一个解决旧问题的方法。
  5. 在 LINQ 的帮助下,您可以毫不费力地使用数据源,例如 XML、SQL、实体、对象等。一个查询可以与数据库一起工作,无需学习各种类型语言。
  6. LINQ 支持查询表达式、匿名类型、隐式类型变量、Lambda 表达式、对象和集合初始化程序以及扩展方法。

我们可以通过两种方式使用 LINQ 查询

LINQ 查询语法结构由在 .NET System 版本 3.5 或更高版本中定义的查询关键字组成。这允许软件工程师或开发人员编写与代码(C# 或 VB.NET)中的 SQL 设计非常相似的指令,而无需使用百分比。它同样被称为问题表达语法。在 LINQ 中,您可以使用后续方法编写对 IEnumerable 系列或 IQueryable 数据源的查询

1. 查询语法

LINQ 查询语言语法以 from 关键字开头,以 Select 或 GroupBy 关键字结尾。在 from 关键字之后,您可以根据需要使用各种类型的标准查询操作,例如分组、过滤等。在 LINQ 中,可以使用 50 种不同的标准问题管理员。

编写查询语法的步骤

步骤 1:在第一步中,我们必须在代码中添加 System.Linq 命名空间。

步骤 2:在第二步中,我们必须创建要对其执行操作的数据源

步骤 3:在第三步中,我们必须使用关键字(如 select、from 等)为数据源创建查询。

在这里,r 是查询变量,它存储查询表达式的结果。form 子句用于指定数据源,即列表,where 条件适用于通道,即 l.Contains(" Hii ") 和 select 语句给出了带回的项目的类型。此外,l 是范围变量。

步骤 4:最后一步是使用 for each 循环执行查询。

查询语法示例程序

输出

What is LINQ

2. 方法语法

在 LINQ 中,方法语法用于调用 Enumerable 或 Queryable 静态类的扩展方法。它也被称为方法扩展语法或流畅语法。尽管如此,编译器通常会在编译时将查询语法转换为方法语法结构。它可以调用标准查询运算符,如 Where、Join、Max、Min、Avg、GroupBy Select 等。您被允许直接调用它们,而无需使用查询语法。

步骤 1:在第一步中,我们必须在代码中添加 System.Linq 命名空间。

步骤 2:在第二步中,我们必须创建要对其执行操作的数据源

步骤 3:现在使用 Enumerable 或 Queryable 静态类提供的方法创建查询

在这里,r 是查询变量,它存储查询表达式的结果。form 子句用于指定数据源,即列表,where 条件适用于通道,即 l.Contains(" Hii ") 和 select 语句给出了带回的项目的类型。此外,l 是范围变量。

步骤 4:最后一步是使用 for each 循环执行查询。

方法语法示例程序

输出

What is LINQ

LINQ 的优点

  1. 客户端不必学习新的查询语言来获取不同的数据格式或数据源。
  2. 它增加了代码的清晰度。
  3. 可以重用查询。
  4. 它在组装时提供对象的类型检查。
  5. 它为传统集合提供了 IntelliSense。
  6. 它可以与集合或数组一起使用。
  7. LINQ 支持排序、分组、过滤和排序。
  8. 它使调试变得简单,因为它与 C# 语言集成在一起。
  9. 它提供了简单的变化,这意味着您可以毫不费力地将多种数据类型更改为另一种数据类型,例如将 SQL 数据更改为 XML 数据。

下一个主题LINQ 语法