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