Ich bin neu bei Linq und brauche etwas Hilfe. Ich bin mir nicht einmal sicher, ob das möglich ist. Angesichts der Beispieldaten:Linq Abfrage mit mehreren Zählern
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
Ich versuche, die Gesamtzahl der Auftragspositionen auf Lager zu bestimmen für jedes Lager, sowohl für alle Auftragspositionen und Aufträge ohne dropship Artikel. So ist die Ausgabe, die ich suche ist so etwas wie dieses:
WarehouseId: 1,
QtyInStock: 2,
QtyNonDropship: 2
WarehouseId: 2,
QtyInStock: 1,
QtyNonDropShip: 1
WarehouseId: 3,
QtyInStock: 2,
QtyNonDropship: 1
ich eine Linq-Abfrage haben begonnen, aber nicht sicher, wie die Zähler zu tun. Ich bin mir ziemlich sicher, dass ich irgendwo einen GroupBy
brauche.
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();
Können Sie mir bitte erklären, wie Sie diese Werte erhalten: 'WarehouseId: 1, QtyInStock: 2, QtyNonDropship: 2' - Sie haben insgesamt verfügbare Menge '6 + 11 + 0 = 17' und dieser Wert ist nicht in der Ausgabe vorhanden. Auch verwenden Sie Feld "QtySellable" in Ihrer Abfrage, die nicht in Beispieldaten vorhanden ist –
Ich versuche nicht, die Anzahl der verfügbaren Artikel auf Lager zu zählen, ich versuche, die Artikel auf Lager zu zählen. Zum Beispiel gibt es im Datensatz 3 Sku-Elemente und 3 Lager. Überprüfen Sie für jedes SKU in jedem Lager, ob der Artikel auf Lager ist. Wenn 'QtyOrdered = = QtyAvailable', dann fügen Sie eins zum Zähler hinzu. Dieser Artikel ist auf Lager. – PixelPaul
Für das erste Lager gibt es nur einen Artikel mit 'QtyOrdered = = QtyAvailable'. Aber in der Ausgabe zeigen Sie 'QtyInStock: 2' –