c# - 来自不同表的两列的总和,如果辅助表没有任何数据,则应返回结果
问题描述
我有两个表: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();
解决方案
下面的代码解决了我的问题。我使用 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();
推荐阅读
- java - 如何在数组列表中使用计数?
- oop - 领域驱动设计——音乐流媒体平台的核心领域是什么?
- python - Pipreqs requirements.txt 不正确
- python - 连续数字列表,得到“只能加入可迭代”错误消息
- html - 如何选择所有没有对齐属性和任何其他样式选项的 p
- python - 蒙蒂 4 门蟒蛇
- laravel - 如何访问解析助手中传递的解析方法中的参数
- pip - 如何将现有的 python 包部署到 jFrog Artifactory?
- android - 我尝试从 Firebase 数据库获取评论但没有结果
- mql4 - mql4 iFractals 它返回什么?什么是 MODE_UPPER 和 MODE_LOWER?