Maison > base de données > tutoriel mysql > Comment puis-je répliquer les instructions SQL CASE dans les requêtes LINQ pour les mises à jour de données ?

Comment puis-je répliquer les instructions SQL CASE dans les requêtes LINQ pour les mises à jour de données ?

Susan Sarandon
Libérer: 2025-01-11 19:27:43
original
363 Les gens l'ont consulté

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

Approche de LINQ en matière de mises à jour conditionnelles des données

LINQ (Language Integrated Query) fournit des moyens efficaces de gérer la logique conditionnelle, reflétant la fonctionnalité des instructions CASE de SQL, en particulier lors de la mise à jour des enregistrements de base de données. Examinons comment y parvenir.

Un scénario courant implique la mise à jour d'une colonne en fonction de plusieurs conditions. Considérez cet exemple SQL :

<code class="language-sql">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</code>
Copier après la connexion

Cette instruction SQL est mise à jour products_quantity en fonction de différents critères. La requête LINQ équivalente serait :

<code class="language-csharp">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
            };</code>
Copier après la connexion

Cette requête LINQ utilise le mot-clé let pour définir un quantity calculé basé sur la logique conditionnelle. L'opérateur ternaire (? :) fournit un moyen concis d'implémenter la fonctionnalité de l'instruction CASE. La sélection finale comprend le ItemId et le UpdatedQuantity calculé, permettant des mises à jour efficaces de la base de données.

Cela montre la flexibilité de LINQ dans la gestion des mises à jour conditionnelles complexes, offrant une alternative puissante aux instructions SQL CASE directes dans votre code C#.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal