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>
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>
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>
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>
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!