大家好,我有一个如下的数据
Item Qty Type
1 2 Purchase
1 3 Sales
1 8 Return
2 5 Purchase
2 4 Sales
2 5 Return现在我有一个需求,通过减去销售量和购买退货量来获得每件商品的数量,我的最终输出将是
item Qty
1 -9
2 -4注意:获取数量:数量=> (采购数量- SalesQty -退货数量)例如:(2-3-8)
那么,如何在LINQ或SQL中编写此查询呢
发布于 2020-05-29 01:40:01
SQL查询:
SELECT Item, SUM(CASE Type WHEN 'Purchase' THEN Qty ELSE -Qty END) AS Qty
FROM Table
GROUP BY ItemLINQ:
Items
.GroupBy(p => p.Item)
.Select(p => new
{
Item = p.Key,
Qty = p.Sum(x => x.Type == "Purchase" ? x.Qty : -x.Qty)
});发布于 2020-05-29 06:07:06
如果您使用的是LINQ to SQL,则可以执行以下操作:
var ans = from i in src
group i by i.Item into ig
let PurchaseQty = ig.Where(i => i.Type == "Purchase").Sum(i => i.Qty)
let SalesQty = ig.Where(i => i.Type == "Sales").Sum(i => i.Qty)
let ReturnQty = ig.Where(i => i.Type == "Return").Sum(i => i.Qty)
select new {
Item = ig.Key,
Qty = PurchaseQty - SalesQty - ReturnQty
};如果你正在使用LINQ to EF 2.2,它可能会工作,但会在客户端进行分组。如果你正在使用EF 3.x,祝你好运!
https://stackoverflow.com/questions/62070941
复制相似问题