Heim >Backend-Entwicklung >C++ >Wie implementiert man eine SQL-CASE-Anweisung in LINQ mit C#?

Wie implementiert man eine SQL-CASE-Anweisung in LINQ mit C#?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 22:42:10138Durchsuche

How to Implement a SQL CASE Statement in LINQ using C#?

LINQ CASE-Anweisungsimplementierung für komplexe Bedingungen

Eine CASE-Anweisung ist ein leistungsstarkes Tool zum Auswerten mehrerer Bedingungen und zum Zurückgeben spezifischer Ergebnisse für jeden Fall . Ziel dieses Artikels ist es, eine klare Erklärung und Lösung für die Implementierung von CASE-Anweisungen in LINQ für C# bereitzustellen.

In einem bestimmten Szenario versucht eine Abfrage, den Bestandsstatus basierend auf einer Reihe von Bedingungen zu aktualisieren:

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 diese CASE-Anweisung in LINQ zu übersetzen, können wir die folgende Syntax verwenden:

query.Select(item => item.Products_Quantity = 
  item.ItemPromoFlag != 'N' ? 100000 : 
  (item.ItemCat1 == "1" || item.ItemCat1 == "2" || item.ItemCat1 == "31") && item.ItemSaleStatus == "S" ? 100000 : 
  item.ItemSaleStatus == "O" ? 0 : 
  cds_oeinvitem.ItemQtyOnHand - cds_oeinvitem.ItemQtyCommitted);

Dieser LINQ-Ausdruck verwendet ternäre Operatoren, um Emulieren Sie die Bedingungen der CASE-Anweisung und legen Sie die entsprechenden Werte für die Products_Quantity-Eigenschaft fest. Das Ergebnis ist eine Abfrage, die den Bestandsstatus basierend auf den angegebenen Bedingungen aktualisiert.

Beachten Sie, dass das bereitgestellte Code-Snippet davon ausgeht, dass Sie bereits eine LINQ-Abfrage mit einer geeigneten Datenquelle eingerichtet haben. Die Abfragevariable im Code sollte die von Ihnen erstellte LINQ-Abfrage darstellen.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine SQL-CASE-Anweisung in LINQ mit C#?. 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