我有一个问题:
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();
我想改变这一行:
数量= s.Quantity
进入
Quantity=Sum(s=>s.Quantity)
我找到了这个 Click 但在实现这个方面仍然存在一些问题。 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)
})
关于c# - 如何将 SUM 聚合函数添加到 Entity Framework 查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932951/