c# - LINQ 列表中按类型分组的项目总和列表

标签 c# linq

我有以下订单对象,其中包含订单插件列表。我正在尝试创建一个报告,显示所有插件类型及其总和的数量。

public class Order {
     public IList<OrderAddon> OrderAddons { get; set; }
}

public class OrderAddon {
     public enum OrderType { get; set; }
     public string Name { get; set; }
     public int Quantity { get; set; }
}

这就是我所在的位置,无法弄清楚整个查询是否错误,或者我只是遗漏了一些东西。

var query = from order in Model.Orders
            from addon in order.OrderAddons
            group order by addon.AddonType
            into orderAddons select new
            {
                 Name = orderAddons.Key,
                 Quantity = orderAddons.Sum(x => x.) << This is where I am stuck
            };

当我点击 .我的 intellisense 向我显示顺序对象而不是插件对象的属性。

最佳答案

那是因为你说的是​​ group order by ...,所以 orderAddons 对象变成了一组 order。如果您需要两个对象的属性,则可以使用它:

from order in Model.Orders
from addon in order.OrderAddons
group new{addon, order} by addon.AddonType
into orderAddons select new
{
    Name = orderAddons.Key,
    Quantity = orderAddons.Sum(x => x.addon.Quantity)
};

如果这就是您需要的所有数据,这会稍微简单一些:

from order in Model.Orders
from addon in order.OrderAddons
group order.Quantity by addon.AddonType
into quantityByAddonType select new
{
    Name = quantityByAddonType.Key,
    Quantity = quantityByAddonType.Sum()
};

关于c# - LINQ 列表中按类型分组的项目总和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747596/

相关文章:

c# - 使用 linq 在列表中查找值?

c# - 为什么 C# 的重载解析在 Func<T,T> 和 Action<T> 之间不起作用?

c# - 排序章节内容,如 14.1.2.3 和 14.10.1.2.3.4

c# - 我可以针对 LINQ 函数测试单个对象吗?

c# - LINQ:失败,因为物化值为 null

c# - .NET 可移植类库 [Serializable] 属性

c# - 使用 Moq It.IsAny 使用通用 Lambda 为通用函数设置 Mock

c# - Onclick 事件在其下方显示一条红线

c# - 如何在 C# 中解决此时隙问题

C# 属性或特性