如何在实体框架查询中添加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方法。
好的,当我更改Select
和GroupBy
:的位置时
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.Name
和s>device.Manufacuter1.Name
出现相同错误
您必须在没有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)
})