Heim >Backend-Entwicklung >C++ >Wie kann der ternäre Operator von LINQ die CASE-Anweisung von SQL für bedingte Mengenaktualisierungen replizieren?
Case-Anweisungen in LINQ: Ein praktisches Beispiel
Die leistungsstarken CASE-Anweisungen von LINQ bieten eine prägnante Syntax für bedingte Auswertungen innerhalb von Abfragen. Berücksichtigen Sie die folgende Anforderung für die Aktualisierung des Lagerbestandsstatus in LINQ:
osc_products.products_quantity = CASE WHEN itempromoflag <> 'N' THEN 100000 WHEN itemcat1 IN ('1','2','31') AND itemsalestatus = 'S' THEN 100000 WHEN itemsalestatus = 'O' THEN 0 ELSE cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted END
In LINQ kann diese CASE-Anweisung wie folgt geschrieben werden:
var query = from items in db.cdsItems where items.ItemHandHeldFlag.Equals("Y") & items.ItemQtyOnHand - items.ItemQtyCommitted > 0 select new { Quantity = items.ItemPromoflag != "N" ? 100000 : items.Itemcat1 == "1" || items.Itemcat1 == "2" || items.Itemcat1 == "31" && items.Itemsalestatus == "S" ? 100000 : items.Itemsalestatus == "O" ? 0 : items.Itemqtyonhand - items.Itemqtycommitted };
Diese Abfrage wertet effektiv die Bedingungen und die Bedingungen der CASE-Anweisung aus weist der Quantity-Eigenschaft des anonymen Typs den entsprechenden Wert zu.
Denken Sie daran, dass die gesamte LINQ-Anweisung zusätzliche Kriterien verarbeitet, wie z ItemHandHeldFlag und Verfügbarkeitsbedingungen.
Das obige ist der detaillierte Inhalt vonWie kann der ternäre Operator von LINQ die CASE-Anweisung von SQL für bedingte Mengenaktualisierungen replizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!