C# Linq连接、群和和
我有这个: 我有三个带有数据订单、订单行和地址的列表 我想加入这些名单C# Linq连接、群和和,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我有这个: 我有三个带有数据订单、订单行和地址的列表 我想加入这些名单 Contents = from o in Orders join a in addresses on o.DeliveryAddressId equals a.AddressId //join ol in ordersLines on o.OrderId equals ol.OrderId let ol = ShopOrderLines.Where(x=&g
Contents = from o in Orders
join a in addresses on o.DeliveryAddressId equals a.AddressId
//join ol in ordersLines on o.OrderId equals ol.OrderId
let ol = ShopOrderLines.Where(x=>x.OrderId == o.OrderId)
select new Order
{
OrderId = o.OrderId,
CreatedDate = o.CreatedDate,
Status = o.Status,
CustomerComment = o.CustomerComment,
AdminComment = o.AdminComment,
PaymentType = (PaymentType) o.PaymentStatus,
PaymentStatus = (PaymentStatus) o.PaymentType,
Firstname = a.Firstname,
Lastname = a.Lastname,
Sum = ol.Any() ? ol.Sum(x=>x.Quantity * x.Price) : 0
};
这很好,但我还想为每个订单添加订单行的总和
像这样的。金额=其他增值税*其他数量+其他数量+其他价格
我想我必须对结果进行分组,然后计算`
有人吗?我更改了代码并添加了let ol=ShopOrderLines。其中x=>x.OrderId==o.OrderId这给了我一个要处理的订单行列表。我觉得不太合适。您正在为每个订单行和每个地址创建一个新订单实例。因此,如果一个订单有两个地址和两个订单行,那么您将创建四个订单对象。您确定不想加入组吗?请注意,您似乎在为两个属性分配错误的PaymentType=PaymentType o.PaymentStatus和PaymentStatus=PaymentStatus o.PaymentType,在我看来这是一个输入错误,这些属性是相互交换的,为什么在Order类中没有Address DeliveryAddress属性和IList OrderLines之类的东西呢?1一个订单只有一个订单只有一个地址。2这是对枚举的强制转换我想我必须对结果进行分组然后计算`?你能详细说明一下吗,你在考虑哪些群体?