我是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' –