如何在实体框架查询中添加SUM聚合函数

本文关键字:SUM 添加 函数 查询 实体 框架 | 更新日期: 2023-09-27 17:57:33

我有一个查询:

var resultb = unitOfWork.deviceInstanceRepository.Get()
            .Select(s => new
            {
                DeviceId = s.DeviceId,
                Name = s.Device.Name,
                Manufacturer = s.Device.Manufacturer1.Name,
                Quantity = s.Quantity
            })
            .GroupBy(w => new
            {
                w.DeviceId,
                w.Name,
                w.Manufacturer,
                w.Quantity
            }).ToList();

我想更改此行:Quantity= s.Quantity

进入

Quantity=Sum(s=>s.Quantity)

我找到了这个点击但是在实现这一点方面仍然存在一些问题。Intellisense中没有Sum方法。

好的,当我更改SelectGroupBy:的位置时

var resultb = unitOfWork.deviceInstanceRepository.Get()
            .GroupBy(w => new
            {
                w.DeviceId,
                w.Device.Name,
                w.Device.Manufacturer,
                w.Quantity
            })
            .Select(s => new
            {
                DeviceId = s.DeviceId,
                Name = s.Device.Name,
                Manufacturer = s.Device.Manufacturer1.Name,
                Quantity = s.Sum(s=>s.Quantity)
            })

我可以使用Sum,但类似于:s.DeviceId的行会抛出Anonymous type does not contain definition of deviceId的错误。s.Device.Names>device.Manufacuter1.Name 出现相同错误

如何在实体框架查询中添加SUM聚合函数

您必须在没有Quantity属性的情况下进行分组,因为这是您要在分组中聚合的属性:

unitOfWork.deviceInstanceRepository.Get()
          .GroupBy(w => new
          {
              DeviceId = w.DeviceId,
              Device = w.Device.Name,
              Manufacturer = w.Device.Manufacturer,
          })
          .Select(s => new
          {
              DeviceId = s.Key.DeviceId,
              Name = s.Key.Device,
              Manufacturer = s.Key.Manufacturer.Name,
              Quantity = s.Sum(x => x.Quantity)
          })