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这是对枚举的强制转换我想我必须对结果进行分组然后计算`?你能详细说明一下吗,你在考虑哪些群体?