文档菜单
文档首页
/ / /
EF Core 提供程序
/

查询数据

本页内容

  • 概述
  • 查找实体
  • 查找单个实体
  • 查找多个实体
  • 排序实体
  • 附加信息

Entity Framework Core 允许您在应用程序中操作数据,而无需显式运行数据库命令。要查询数据,请使用语言集成查询(LINQ)语法。LINQ 允许您使用 C# 特定的关键字和运算符编写强类型查询。当运行应用程序时,EF Core 提供程序会自动将 LINQ 查询转换为 MongoDB 查询 API 并在数据库上运行。

在本指南中,您可以查看配置为使用EF Core Provider的应用程序上的常见查询操作的示例。

提示

要了解如何配置应用程序以使用EF Core Provider,请参阅配置EF Core Provider.

使用FirstOrDefault()方法查找单个实体,或使用Where()方法查找多个实体。

FirstOrDefault()方法返回在您的集合中找到的第一个与搜索条件匹配的实体,如果没有找到匹配的实体,则返回null

以下代码使用FirstOrDefault()方法从一个名为PlanetsDBSet中查找具有“Mercury”字段名的行星,并将行星名称打印到控制台。

var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury");
Console.WriteLine(planet.name);

您可以使用Where()方法从您的集合中检索多个实体。Where()返回所有符合搜索条件的实体。

以下代码使用Where()方法查找所有将hasRings字段设置为true的行星,并将行星名称打印到控制台。

var planets = db.Planets.Where(p => p.hasRings);
foreach (var p in planets)
{
Console.WriteLine(p.name);
}

使用OrderBy()方法指定查询中返回实体的顺序。OrderBy()根据指定的排序标准按升序对元素进行排序。

以下代码使用OrderBy()方法查找所有行星,并按orderFromSun字段的值按升序排序。然后将结果打印到控制台。

var planetList = db.Planets.OrderBy(p => p.orderFromSun);
foreach (var p in planetList)
{
Console.WriteLine(p.name);
}
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune

提示

降序排序

您可以使用OrderByDescending()方法按降序对查询的结果进行排序。

您可以使用ThenBy()方法对查询执行次要排序。ThenBy()方法根据指定的排序标准按升序对OrderBy()方法的结果进行排序。ThenBy()方法应该链接到OrderBy()方法。

提示

降序次要排序

您可以使用ThenByDescending()方法执行降序次要排序。

以下代码使用 OrderBy()ThenBy() 方法来查找所有行星,并根据 hasRings() 字段进行排序,次要排序根据 name 字段。

var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name);
foreach (var p in planetList)
{
Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name);
}
Has rings: False, Name: Earth
Has rings: False, Name: Mars
Has rings: False, Name: Mercury
Has rings: False, Name: Venus
Has rings: True, Name: Jupiter
Has rings: True, Name: Neptune
Has rings: True, Name: Saturn
Has rings: True, Name: Uranus

提示

当按布尔值字段排序时,字段值为 false 的实体将显示在字段值为 true 的实体之前。

要了解本指南中讨论的这些方法,请参阅以下 .NET API 文档链接

  • FirstOrDefault()

  • Where()

  • OrderBy()

  • OrderByDescending()

  • ThenBy()

  • ThenByDescending()

返回

配置