Entity Framework Core 6 分组查询并转换为自定义对象

本文将介绍如何使用 Entity Framework Core 6 按条件对数据进行分组,并将结果转换为自定义对象。

场景描述

假设我们有如下两个类:

public class Order
{
    public long Id { get; set; }
    public long StoreId { get; set; }
}

public class OrderGroup
{
    public long StoreId { get; set; }
    public List<Order> Orders { get; set; }
}

我们希望从数据库中查询所有订单,并按 Order.StoreId 分组,最终得到一个 List<OrderGroup> 类型的结果。

代码实现

可以使用 LINQ 语句和 GroupBy 方法来实现:

var orderGroups = dbContext.Orders
    .GroupBy(o => o.StoreId)
    .Select(g => new OrderGroup
    {
        StoreId = g.Key,
        Orders = g.ToList()
    })
    .ToList();

其中:

  • dbContext 是 Entity Framework Core 的 DbContext 实例。
  • Orders 是表示订单的 DbSet 属性。

代码解释:

  1. 使用 GroupBy(o => o.StoreId) 方法按 Order.StoreId 对订单进行分组。
  2. 使用 Select 方法将每个分组转换为一个 OrderGroup 对象。
    • g.Key 表示分组的键,这里是 StoreId
    • g.ToList() 将分组内的所有订单转换为 List<Order>
  3. 使用 ToList() 方法将结果转换为 List<OrderGroup> 类型。

总结

通过上述代码,我们可以方便地使用 Entity Framework Core 6 按条件进行分组查询,并将结果转换为自定义对象。这种方法可以提高代码的可读性和可维护性,使代码更加简洁易懂。

Entity Framework Core 6 按条件分组查询并转换为自定义对象

原文地址: https://www.cveoy.top/t/topic/jnBk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录