Heim > Datenbank > MySQL-Tutorial > Wie konvertiert man SQL-CASE-Anweisungen in LINQ-Abfragen?

Wie konvertiert man SQL-CASE-Anweisungen in LINQ-Abfragen?

Mary-Kate Olsen
Freigeben: 2025-01-11 19:06:44
Original
632 Leute haben es durchsucht

How to Convert SQL CASE Statements to LINQ Queries?

CASE-Anweisung in LINQ: Verständnis und Implementierung

Mit der CASE-Anweisung in LINQ können Entwickler mehrere Bedingungen auswerten und basierend auf den Ergebnissen bestimmte Werte zuweisen. Sie werden häufig zur Datentransformation und -manipulation verwendet.

Komplexe CASE-Anweisungen in LINQ konvertieren

Betrachten wir die CASE-Aussage in der ursprünglichen Frage:

<code class="language-sql">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  </code>
Nach dem Login kopieren

Diese Anweisung weist dem Feld products_quantity der Tabelle osc_products basierend auf verschiedenen Bedingungen bestimmte Werte zu. Um es in LINQ zu konvertieren, können wir die folgende Syntax verwenden:

<code class="language-csharp">var productsQuantity = 
    osc_products
    .Select(x => new
    {
        x.products_quantity,
        ItemPromoFlag = x.itempromoflag != "N",
        ItemCategory1 = new[] { "1", "2", "31" }.Contains(x.itemcat1),
        ItemSaleStatus = x.itemsalestatus == "S",
        AvailableQuantity = x.itemqtyonhand - x.itemqtycommitted
    })
    .Select(x => x.products_quantity = 
        x.ItemPromoFlag ? 100000 :
        (x.ItemCategory1 && x.ItemSaleStatus) ? 100000 :
        x.itemsalestatus == "O" ? 0 :
        x.AvailableQuantity
    );</code>
Nach dem Login kopieren

Grundlegendes zur LINQ-Konvertierung

Diese LINQ-Anweisung projiziert einen neuen anonymen Typ, der das vorhandene Feld „products_quantity“ und zusätzliche Eigenschaften enthält, die den booleschen Wert des bedingten Ausdrucks enthalten. Anschließend wird eine verschachtelte Select-Operation verwendet, um den berechneten products_quantity-Wert bedingt zuzuweisen.

Einfaches CASE-Anweisungsbeispiel

Das bereitgestellte Codebeispiel zum Konvertieren einer einfachen CASE-Anweisung in LINQ demonstriert die Verwendung ternärer Ausdrücke in einer Select-Klausel:

<code class="language-csharp">Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 };

var numberText =
(
    from n in numbers
    where n > 0
    select new
    {
        Number = n,
        Text = n == 1 ? "One" : n == 2 ? "Two" : n == 3 ? "Three" : "Unknown"
    }
);</code>
Nach dem Login kopieren

Diese Anweisung verwendet einen ternären Ausdruck, um einer Zahl basierend auf ihrem Wert einen anderen Textwert zuzuweisen. Die Syntax des ternären Ausdrucks lautet:

<code class="language-csharp">condition ? true_expression : false_expression</code>
Nach dem Login kopieren

Diese Beispiele veranschaulichen, wie CASE-Anweisungen in LINQ konvertiert werden, und bieten so eine prägnante und einfach zu wartende Möglichkeit, Bedingungen auszuwerten und Ihren Daten Werte zuzuweisen.

Das obige ist der detaillierte Inhalt vonWie konvertiert man SQL-CASE-Anweisungen in LINQ-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage