Maison > base de données > tutoriel mysql > Comment implémenter une instruction SQL CASE équivalente dans LINQ pour l'attribution conditionnelle de quantité de produit ?

Comment implémenter une instruction SQL CASE équivalente dans LINQ pour l'attribution conditionnelle de quantité de produit ?

Linda Hamilton
Libérer: 2025-01-11 19:22:42
original
955 Les gens l'ont consulté

How to Implement a SQL CASE Statement Equivalent in LINQ for Conditional Product Quantity Assignment?

Réplication des instructions SQL CASE dans LINQ pour l'allocation dynamique de quantité de produit

Cet article montre comment traduire la fonctionnalité d'une instruction SQL CASE en LINQ, en abordant spécifiquement le défi de l'attribution conditionnelle de quantités de produits en fonction de divers critères. Nous modifierons le code existant pour intégrer cette logique.

Le calcul initial :

cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted
Copier après la connexion

Cette simple soustraction détermine le stock disponible en déduisant les quantités engagées du stock disponible.

L'équivalent de l'instruction SQL CASE dans LINQ utilise des opérateurs ternaires imbriqués :

osc_products.products_quantity =
    itempromoflag != "N" ? 100000 :
    (
        itemcat1.In("1", "2", "31") && itemsalestatus == "S" ? 100000 :
        itemsalestatus == "O" ? 0 :
        cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted
    )
Copier après la connexion

Cette structure imbriquée reflète la logique conditionnelle d'une instruction CASE. Il priorise les conditions : si itempromoflag n'est pas « N », la quantité est 100000 ; sinon, il passe à la condition suivante, et ainsi de suite.

La requête LINQ intégrée :

cdsDBDataContext db = new cdsDBDataContext();
var query = from items in db.cdsItems
            where items.ItemHandHeldFlag == "Y" &&
                  (
                      items.Itempromoflag != "N" ? 100000 :
                      (
                          items.Itemcat1.In("1", "2", "31") && items.Itemsalestatus == "S" ? 100000 :
                          items.Itemsalestatus == "O" ? 0 :
                          items.Itemqtyonhand - items.Itemqtycommitted
                      )
                  ) > 0
            select items;
Copier après la connexion

Cette requête révisée intègre l'attribution conditionnelle de quantité, garantissant que l'état du stock est mis à jour avec précision en fonction des critères définis. Seuls les articles répondant à la condition ItemHandHeldFlag et ayant une quantité résultante supérieure à zéro sont sélectionnés. Cela reproduit efficacement le comportement d'une instruction SQL CASE dans le framework LINQ.

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!

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