我是Linq的新手,需要一些帮助。事实上,我甚至不确定这是可能的。给出样本数据:
WarehouseId Sku Dropship QtyOrdered QtyAvaliable
=================================================================
1 ABC-123 1 6
2 ABC-123 1 2
3 ABC-123 1 0
1 XYZ-789 2 11
2 XYZ-789 2 1
3 XYZ-789 2 3
1 JKL-456 Y 1 0
2 JKL-456 Y 1 0
3 JKL-456 Y 1 1
我正在尝试确定每个仓库的库存订单商品总数,包括所有订单商品和没有下装商品的订单。所以我正在寻找的输出是这样的:
WarehouseId: 1,
QtyInStock: 2,
QtyNonDropship: 2
WarehouseId: 2,
QtyInStock: 1,
QtyNonDropShip: 1
WarehouseId: 3,
QtyInStock: 2,
QtyNonDropship: 1
我已经启动了Linq查询,但不知道如何进行计数器。我很确定我需要GroupBy
某个地方。
var results = (from o in orderItems
where o.QtySellable >= o.QtyOrdered // <-- add '1' to QtyInStock
|| (o.QtySellable >= o.QtyOrdered && o.Dropship != 'Y')// <-- add '1' to QtyNonDropShip
select new
{
WarehouseId,
QtyInStock += QtyInStock
QtyNonDropShip += QtyNonDropShip
}).ToList();
答案 0 :(得分:1)
您需要按WarehouseId
分组:
var results = from o in orderItems
group o by o.WarehouseId into g
select new { WarehouseId=g.Key,
QtyInStock=g.Count(e=>e.QtySellable >= e.QtyOrdered),
QtyNonDropShip =g.Count(e=>e.QtySellable >= e.QtyOrdered && e.Dropship != "Y")
};