Heim >Backend-Entwicklung >C++ >Wie kann ich SQL-CASE-Anweisungen mit LINQ replizieren?

Wie kann ich SQL-CASE-Anweisungen mit LINQ replizieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-29 03:50:13403Durchsuche

How Can I Replicate SQL CASE Statements Using LINQ?

LINQ-Implementierung von CASE-Anweisungen

In LINQ können Sie bedingte Anweisungen verwenden, um die Funktionalität von CASE-Anweisungen in SQL zu simulieren. Sehen wir uns ein konkretes Beispiel an:

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 konvertieren, können Sie den folgenden Ansatz verwenden:

// Linq syntax
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag.Equals("Y") && 
            items.ItemQtyOnHand - items.ItemQtyCommitted > 0
            select items;

// Alternate lambda syntax with expression body
var query2 = db.cdsItems
    .Where(items => items.ItemHandHeldFlag.Equals("Y") && 
            (items.ItemQtyOnHand - items.ItemQtyCommitted > 0))
    .Select(items => items);

Diese Abfrage simuliert effektiv das Verhalten der CASE-Anweisung und aktualisiert die Lagerbestandsstatus von der Produktion bis zur Handelsseite wie vorgesehen.

Beachten Sie, dass LINQ im Vergleich zur Verwendung eine präzisere und wartbarere Möglichkeit zur Handhabung bedingter Anweisungen bietet CASE-Anweisungen in SQL. Es ermöglicht Ihnen, eine einzige Anweisung zu verwenden, um mehrere Bedingungen auszuwerten und die gewünschte Ausgabe zu erzeugen.

Das obige ist der detaillierte Inhalt vonWie kann ich SQL-CASE-Anweisungen mit LINQ replizieren?. 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