Heim > Datenbank > MySQL-Tutorial > Wie kann ich SQL-CASE-Anweisungen in LINQ-Abfragen für Datenaktualisierungen replizieren?

Wie kann ich SQL-CASE-Anweisungen in LINQ-Abfragen für Datenaktualisierungen replizieren?

Susan Sarandon
Freigeben: 2025-01-11 19:27:43
Original
435 Leute haben es durchsucht

How Can I Replicate SQL CASE Statements in LINQ Queries for Data Updates?

LINQs Ansatz für bedingte Datenaktualisierungen

LINQ (Language Integrated Query) bietet effiziente Möglichkeiten zur Verwaltung der bedingten Logik und spiegelt die Funktionalität der CASE-Anweisungen von SQL wider, insbesondere beim Aktualisieren von Datenbankdatensätzen. Lassen Sie uns untersuchen, wie wir dies erreichen können.

Ein häufiges Szenario besteht darin, eine Spalte basierend auf mehreren Bedingungen zu aktualisieren. Betrachten Sie dieses SQL-Beispiel:

UPDATE osc_products
SET 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
Nach dem Login kopieren

Diese SQL-Anweisung aktualisiert products_quantity basierend auf verschiedenen Kriterien. Die entsprechende LINQ-Abfrage wäre:

cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y"
            let quantity =
                (
                    items.ItemPromoFlag != 'N' ? 100000 :
                    (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 :
                    items.ItemSaleStatus == "O" ? 0 :
                    items.ItemQtyOnHand - items.ItemQtyCommitted
                )
            select new
            {
                ItemId = items.ItemId,
                UpdatedQuantity = quantity
            };
Nach dem Login kopieren

Diese LINQ-Abfrage verwendet das Schlüsselwort let, um ein berechnetes quantity basierend auf der bedingten Logik zu definieren. Der ternäre Operator (? :) bietet eine prägnante Möglichkeit, die Funktionalität der CASE-Anweisung zu implementieren. Die endgültige Auswahl umfasst das ItemId und das berechnete UpdatedQuantity, was effiziente Datenbankaktualisierungen ermöglicht.

Dies zeigt die Flexibilität von LINQ bei der Handhabung komplexer bedingter Aktualisierungen und bietet eine leistungsstarke Alternative zu direkten SQL-CASE-Anweisungen in Ihrem C#-Code.

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

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