Logo
Section 1 / 14

使用 LINQ 查询数据

学习如何使用 LINQ 查询 EF Core 中的数据。

导入

使用 LINQ 查询数据

学习如何使用 LINQ 查询 EF Core 中的数据。

LINQ 简介

EF Core 使用语言集成查询(LINQ)从数据存储中查询数据。只要数据存储支持 LINQ 提供程序,LINQ 就可以查询多个数据存储中的数据。

...
LINQ 为查询不同数据存储提供了一种编程模型

查询 是从数据源检索数据的表达式。传统上,我们使用特定的查询语言(如 SQL 或 XQuery)来表达查询,开发者必须为每个应用程序所支持的数据源学习相应的查询语言。

通过为多种数据源提供一致的编程模型,LINQ 简化了开发过程。我们可以使用相同的通用查询表达式模式,对 SQL 数据库、ADO .NET 数据集、XML 文档和流以及 .NET 集合中的数据进行查询和转换。

...
LINQ 的实际应用

此外,查询返回的结果是对象形式,使开发者能够直接对结果集使用面向对象的技术,而无需担心将不同格式的结果转换为对象。

LINQ 查询的工作原理

使用 LINQ 时,我们可以基于派生的上下文和实体类型,用 C# 编写强类型的查询。在运行时,EF Core 将 LINQ 查询的表示传递给数据库提供程序,数据库提供程序会将 LINQ 查询转换为特定于数据库的查询。

以下是使用 LINQ 可以实现的一些操作:

加载所有数据

1using (var context = new BooksContext()) 2{ 3 var books = context.Books.ToList(); 4}

代码示例中的 第 3 行 从 BooksContext 中获取所有书籍。

加载单个实体

1using (var context = new BooksContext()) 2{ 3 var book = context.Books.Single(b => b.BookId == 2); 4}

代码示例中的 第 3 行 从 BooksContext 中获取一本指定 ID 的书籍。

数据过滤

1using (var context = new BooksContext()) 2{ 3 var book = context.Books 4 .Where(b => b.Title.Contains("Learning")) 5 .ToList(); 6}

代码示例中的 第 3 至 5 行 从 BooksContext 中获取标题包含“Learning”的书籍集合。

使用 LINQ 查询的优势

  • 由于减少了编写特定于数据库查询的需求,提高了开发效率并缩短了开发时间。

  • LINQ 使用熟悉且统一的语法来查询各种数据源。

  • LINQ 的层次化特性使表之间的关系一目了然,便于编写涉及多表连接的查询。

  • LINQ 查询操作在数据源、查询本身以及查询执行过程中均具有强类型特性,这种强类型保证了类型错误能在编译时被发现。

配置模型

LINQ 查询操作