LINQs Ansatz für bedingte Datenaktualisierungen
LINQ (Language Integrated Query) bietet effiziente Möglichkeiten zur Verwaltung der bedingten Logik und spiegelt die Funktionalität der CASE-Anweisungen von SQL wider, insbesondere beim Aktualisieren von Datenbankdatensätzen. Lassen Sie uns untersuchen, wie wir dies erreichen können.
Ein häufiges Szenario besteht darin, eine Spalte basierend auf mehreren Bedingungen zu aktualisieren. Betrachten Sie dieses SQL-Beispiel:
UPDATE osc_products SET 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
Diese SQL-Anweisung aktualisiert products_quantity
basierend auf verschiedenen Kriterien. Die entsprechende LINQ-Abfrage wäre:
cdsDBDataContext db = new cdsDBDataContext(); var query = from items in db.cdsItems where items.ItemHandHeldFlag == "Y" let quantity = ( items.ItemPromoFlag != 'N' ? 100000 : (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 : items.ItemSaleStatus == "O" ? 0 : items.ItemQtyOnHand - items.ItemQtyCommitted ) select new { ItemId = items.ItemId, UpdatedQuantity = quantity };
Diese LINQ-Abfrage verwendet das Schlüsselwort let
, um ein berechnetes quantity
basierend auf der bedingten Logik zu definieren. Der ternäre Operator (? :
) bietet eine prägnante Möglichkeit, die Funktionalität der CASE-Anweisung zu implementieren. Die endgültige Auswahl umfasst das ItemId
und das berechnete UpdatedQuantity
, was effiziente Datenbankaktualisierungen ermöglicht.
Dies zeigt die Flexibilität von LINQ bei der Handhabung komplexer bedingter Aktualisierungen und bietet eine leistungsstarke Alternative zu direkten SQL-CASE-Anweisungen in Ihrem C#-Code.
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-CASE-Anweisungen in LINQ-Abfragen für Datenaktualisierungen replizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!