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