将LINQ查询转换为SQL语句:多对多关联下门店商品总价计算
LINQ转SQL:计算指定门店商品总价值
原LINQ查询逻辑
这段LINQ的作用是:筛选关联表MyTable中属于指定门店(storeid)的记录,将每条记录的商品数量(Count)乘以对应商品(Products表)的售价(Sellprice),最终求和得到该门店的商品总价值。
原LINQ代码:
user.MyTable.Where(i => i.StoreID == storeid).Sum(i => i.Count * user.Products.First(j => j.ProductID == i.ProductID).Sellprice);
等价SQL查询
对应的SQL语句通过关联查询实现,相比LINQ逐行匹配商品的方式,用JOIN更贴合SQL执行逻辑且性能更优:
SELECT SUM(mt.Count * p.Sellprice) AS TotalValue FROM MyTable mt JOIN Products p ON mt.ProductID = p.ProductID WHERE mt.StoreID = @storeid;
说明
- 用
JOIN通过ProductID关联MyTable和Products,直接匹配对应商品的售价,替代LINQ中First的逐行查询逻辑。 @storeid为参数化变量,对应LINQ中的storeid参数,可避免SQL注入风险。- 最终通过
SUM函数计算所有符合条件记录的Count * Sellprice之和,得到目标门店的商品总价值。
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

