私は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
が必要だと私は確信しています。 WarehouseId
によってあなたがグループに必要
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();
あなたがそれらの値を取得する方法を説明していただけます2'は - あなたが利用可能な総数量を持っています'6 + 11 + 0 = 17'であり、この値は出力には存在しない。また、サンプルデータに存在しないクエリにQtySellableというフィールドを使用しています –
私は在庫があるアイテムの数を数えようとしていません。在庫があるアイテムを数えようとしています。たとえば、データセットには、3つのSKUアイテムと3つのウェアハウスがあります。各倉庫の各SKUごとに、品目が在庫であることを確認します。 'QtyOrdered> = QtyAvailable'の場合は、カウンタに1を加えます。その商品は在庫です。 – PixelPaul
最初の倉庫には、「QtyOrdered> = QtyAvailable」という項目が1つしかありません。しかし出力で 'QtyInStock:2'と表示されます。 –