我有以下代码,它们对某些值进行分组和求和。 总和“TotalCost”值是正确的,但是,当我取消注释行时,总和值是错误的(它小于它应该是)
我做错了什么,但无法弄清楚这一点。任何想法?
from orderItem in Order_ProductItem
//join ho in Hardware_Items on orderItem.OuterColour equals ho.Index
//join hi in Hardware_Items on orderItem.InnerColour equals hi.Index
where orderItem.SalesOrderID == 3272 && (orderItem.IsDeleted==null || orderItem.IsDeleted.Value == false)
group new { orderItem/*, hi, ho*/} by orderItem.FrameNo into grp
select new OrderItemModel
{
FrameNo = grp.Key,
TotalCost = grp.Sum(x => x.orderItem.SellingPrice),
//InternalColor = grp.FirstOrDefault().hi.Name,
//ExternalColor = grp.FirstOrDefault().ho.Name,
Quantity = grp.FirstOrDefault().orderItem.Quantity,
}
基本架构
Order_ProductItem
Hardware_Items
Order_ProductItem有FrameNo,它在表中多次列出,所以我试图让它对它们进行分组,然后对每个具有相同FrameNo的行的SellingPrice求和。
如果我排除该位以获得颜色(内部和外部),则总和是正确的。 在那种情况下,我如何还包括内部和外部颜色名称?
答案 0 :(得分:0)
您可能需要使用left join
,因为inner join
会过滤掉您的部分数据。以下是有关如何更改首次加入的示例。
join ho in Hardware_Items on orderItem.OuterColour equals ho.Index into hog
from ho in hog.DefaultIfEmpty()