我有两个表:Tb_PurchaseProductDetail(主键:id)、tb_productstockupdate(外键:PurchaseProductId(与 Tb_PurchaseProductDetail 表主键有关系))。现在我想要关系中 Tb_PurchaseProductDetail 表的两列值和 tb_productstockupdate 表的一列的总和 ()。如果 tb_productstockupdate 表中存在任何单行,但如果 tb_productstockupdate 表中没有可用数据,则下面的查询会给我正确的数据,而不是从主表返回数据。
我希望如果辅助表中不存在数据,至少它应该基于主表返回数据。
s.tb_productstockupdate.Sum(d => d.StockDifference))
上面的代码应该返回 0 而不是 null。
下面是我正在使用的代码。我不知道我错过了什么。
connectionObj.Tb_PurchaseProductDetail.Where(s => s.ProductId == prodcutId && ((s.Quantity + s.DiscountQuantity + s.tb_productstockupdate.Sum(d => d.StockDifference)) > s.SoldPackQuantity)).Select(s => new SelectListItem()
{
Text = s.BatchNumber + " [(" + (s.Quantity + s.DiscountQuantity + s.tb_productstockupdate.Sum(d => d.StockDifference) - s.SoldPackQuantity) + ") & " + s.ExpiryDate + "]",
Value = s.Id.ToString()
}).ToList();
下面的代码解决了我的问题。我使用 Any() 检查辅助表是否有数据,并相应地放置我的逻辑。
connectionObj.Tb_PurchaseProductDetail.Where(s => s.ProductId == prodcutId && ((s.Quantity + s.DiscountQuantity + (s.tb_productstockupdate.Any() ? s.tb_productstockupdate.Select(d => d.StockDifference).Sum() : 0)) > s.SoldPackQuantity)).Select(s => new SelectListItem()
{
Text = s.BatchNumber + " [(" + (s.Quantity + s.DiscountQuantity + (s.tb_productstockupdate.Any()? s.tb_productstockupdate.Sum(d => d.StockDifference) : 0) - s.SoldPackQuantity) + ") & " + s.ExpiryDate + "]",
Value = s.Id.ToString()
}).ToList();
交互式爱情
梦里花落0921
相关分类