Heim >Backend-Entwicklung >C++ >Wie kann ich SQL-CASE-Anweisungen in LINQ konvertieren?
LINQ CASE-Anweisungen: Ein tieferer Einblick
In LINQ (Language Integrated Query) bieten CASE-Anweisungen eine bequeme Möglichkeit, mehrere Bedingungen auszuwerten und Geben Sie basierend auf diesen Bedingungen unterschiedliche Werte zurück. Um die bereitgestellte CASE-Anweisung in LINQ zu konvertieren, können ternäre bedingte Operatoren oder Lambda-Ausdrücke genutzt werden, um eine ähnliche Funktionalität zu erreichen.
Betrachten Sie das folgende Beispiel:
// Original CASE statement 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
Um dies in LINQ zu übersetzen, haben wir kann ternäre bedingte Operatoren verwenden:
var newQuantity = (itempromoflag != 'N') ? 100000 : ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 : (itemsalestatus == 'O') ? 0 : cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;
Alternativ können Lambda-Ausdrücke für eine prägnantere Darstellung verwendet werden Darstellung:
var newQuantity = (itempromoflag != 'N') ? 100000 : ((itemcat1 == '1' || itemcat1 == '2' || itemcat1 == '31') && itemsalestatus == 'S') ? 100000 : (itemsalestatus == 'O') ? 0 : () => cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted;
In diesen Beispielen führen der ternäre Operator und die Lambda-Ausdrücke ähnliche bedingte Prüfungen durch und geben den entsprechenden Wert basierend auf der erfüllten Bedingung zurück.
Das obige ist der detaillierte Inhalt vonWie kann ich SQL-CASE-Anweisungen in LINQ konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!