Maison >développement back-end >C++ >Comment l'opérateur ternaire de LINQ peut-il répliquer l'instruction CASE de SQL pour les mises à jour de quantités conditionnelles ?
Instructions Case dans LINQ : un exemple pratique
Les puissantes instructions CASE de LINQ fournissent une syntaxe concise pour les évaluations conditionnelles dans les requêtes. Considérez l'exigence suivante pour mettre à jour l'état du stock dans LINQ :
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
Dans LINQ, cette instruction CASE peut être écrite comme suit :
var query = from items in db.cdsItems where items.ItemHandHeldFlag.Equals("Y") & items.ItemQtyOnHand - items.ItemQtyCommitted > 0 select new { Quantity = items.ItemPromoflag != "N" ? 100000 : items.Itemcat1 == "1" || items.Itemcat1 == "2" || items.Itemcat1 == "31" && items.Itemsalestatus == "S" ? 100000 : items.Itemsalestatus == "O" ? 0 : items.Itemqtyonhand - items.Itemqtycommitted };
Cette requête évalue efficacement les conditions de l'instruction CASE et attribue la valeur appropriée à la propriété Quantity du type anonyme.
N'oubliez pas que l'instruction LINQ globale gère des critères supplémentaires tels que ItemHandHeldFlag et conditions de disponibilité.
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!