Maison >développement back-end >C++ >Comment puis-je répliquer des instructions SQL CASE à l'aide de LINQ ?

Comment puis-je répliquer des instructions SQL CASE à l'aide de LINQ ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 03:50:13438parcourir

How Can I Replicate SQL CASE Statements Using LINQ?

Implémentation LINQ des instructions CASE

Dans LINQ, vous pouvez utiliser des instructions conditionnelles pour simuler la fonctionnalité des instructions CASE trouvées dans SQL. Examinons un exemple spécifique :

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  

Pour convertir cette instruction CASE en LINQ, vous pouvez utiliser l'approche suivante :

// 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);

Cette requête simule efficacement le comportement de l'instruction CASE et met à jour le état du stock depuis la production jusqu'au site de commerce comme prévu.

Notez que LINQ fournit un moyen plus concis et maintenable de gérer les instructions conditionnelles par rapport à l'utilisation de CASE. instructions en SQL. Il vous permet d'utiliser une seule instruction pour évaluer plusieurs conditions et produire le résultat souhaité.

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:
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