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

标签: Linq C#
发布时间: 2017/2/28 23:05:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下 order 对象,其中包含订单插件的列表。我想创建一个报表,显示所有插件类型和总结他们的数量。

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
            };

当我打。我的智能感知显示我在 order 对象不是插件的对象属性。

解决方法 1:

那是因为你说 group order by ... ,因此在 orderAddons 对象变为一组 order s。如果你要去需要从这两个对象的属性,您可以使用此︰

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()
};
官方微信
官方QQ群
31647020