c# - 如何将 SUM 聚合函数添加到 Entity Framework 查询中

标签 c# entity-framework

我有一个问题:

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 方法。

好的,当我更改 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 deviceIds.Device.Names>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/

相关文章:

c# - 使用 C# 中的 Json.Parse 或 Regex 获取单行 JSON 响应

entity-framework - Entity Framework (CTP5、Fluent API)。重命名导航属性列

c# - 类、结构或接口(interface)成员声明中的无效标记 '=' c#

c# - 方法调用期间是否会发生上下文切换?

c# - 当 IDENTITY_INSERT 设置为 OFF 时,无法为标识列插入显式值

c# - 使用 EF 数据库优先应用程序部署 ASP.NET Web API

entity-framework - 加载在另一个DbContext中所做的更改

c# - 遍历实体引用的方式是否正确?

c# - 将 nhibernate 与 Unity3D 集成

c# - 泛型方法的多重约束?