查询数据
概述
Entity Framework Core 允许您在不显式运行数据库命令的情况下处理应用程序中的数据。要查询数据,请使用语言集成查询 (LINQ) 语法。 LINQ 允许使用特定于 C# 的关键字和操作符编写强类型查询。运行应用程序时,EF Core 提供程序会自动转换 LINQ 查询,并使用 MongoDB 查询 API 在数据库上运行这些查询。
在本指南中,您可以查看配置为使用 EF Core 提供程序的应用程序的常见查询操作示例。
提示
要了解如何配置应用程序以使用 EF Core 提供程序,请参阅配置 EF Core 提供程序。
查找实体
使用 FirstOrDefault()
方法查找单个实体,或使用Where()
方法查找多个实体。
查找单个实体
FirstOrDefault()
方法返回在collection中找到的与搜索条件匹配的第一个实体;如果未找到匹配的实体,则返回null
。
以下代码使用FirstOrDefault()
方法从名为Planets
的DBSet
中查找name
字段为 "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); }
提示
按降序排序
您可以使用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); }
提示
对具有布尔值的字段进行排序时,字段值为false
的实体显示在值为true
的实体之前。
更多信息
要进一步了解本指南中讨论的方法,请参阅以下 .NET API 文档链接: