我是Linq的新手,需要一些帮助。事实上,我甚至不确定这是可能的。鉴于样本数据:有多个计数器的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();
能否请你解释你是如何得到这些值:'WarehouseId:1, QtyInStock:2,QtyNonDropship:2' - 你有总的可用数量'6 + 11 + 0 = 17',这个值不会出现在输出中。您也正在查询中使用字段'QtySellable',这在示例数据中不存在 –
我并不试图计算库存中可用项目的数量,我正在计算库存中的项目。例如在数据集中,有3个sku项目和3个仓库。对于每个仓库的每个SKU,请检查该物品是否有库存。如果'QtyOrdered> = QtyAvailable',则添加一个计数器。该项目有现货。 – PixelPaul
对于第一个仓库,只有一个项目的'QtyOrdered> = QtyAvailable'。但在输出你显示'QtyInStock:2' –