Heim >Backend-Entwicklung >C++ >Wie kann ich SQL-CASE-Anweisungen in LINQ konvertieren?

Wie kann ich SQL-CASE-Anweisungen in LINQ konvertieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 11:41:40230Durchsuche

How Can I Convert SQL CASE Statements to LINQ?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn