具有多个计数器的Linq查询
我是Linq的新手,需要一些帮助。事实上,我甚至不确定这是否可能。鉴于样本数据:具有多个计数器的Linq查询,linq,Linq,我是Linq的新手,需要一些帮助。事实上,我甚至不确定这是否可能。鉴于样本数据: WarehouseId Sku Dropship QtyOrdered QtyAvaliable ================================================================= 1 ABC-123 1 6 2 ABC-
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();
var results=(来自orderItems中的o)
其中o.QtySellable>=o.QtyOrdered/=o.QtyOrdered&&o.Dropship!=“Y”)/您需要根据仓库ID进行分组:
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")
};
您能否解释一下如何获得这些值:WarehouseId:1,QtyInStock:2,QTYNondrophip:2
-您有总可用数量6+11+0=17
,而此值不在输出中。另外,您在查询中使用了字段QtySellable
,该字段在示例数据中不存在。我不是在统计库存中可用的项目数量,而是在统计库存中的项目。例如,在数据集中,有3个sku项目和3个仓库。对于每个仓库的每个sku,请检查该项目是否有库存。如果QtyOrdered>=QtyAvailable
,则向计数器添加一个。该商品有库存。对于第一个仓库,只有一个商品QtyOrdered>=QtyAvailable
。但在输出中,您显示的是QtyInStock:2
对不起,我打错了。对于第一个仓库,QtyAvailable>=QtyOrdered
将使您的QtyInStock
等于3。OP执行为2