查询数据
Overview
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); }
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 文档链接: