Instruction CASE dans LINQ : compréhension et mise en œuvre
L'instruction CASE dans LINQ permet aux développeurs d'évaluer plusieurs conditions et d'attribuer des valeurs spécifiques en fonction des résultats. Ils sont couramment utilisés pour la transformation et la manipulation de données.
Convertir les instructions CASE complexes en LINQ
Considérons la déclaration CASE fournie dans la question initiale :
<code class="language-sql">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 </code>
Cette instruction attribue des valeurs spécifiques au champ products_quantity de la table osc_products en fonction de diverses conditions. Pour le convertir en LINQ, nous pouvons utiliser la syntaxe suivante :
<code class="language-csharp">var productsQuantity = osc_products .Select(x => new { x.products_quantity, ItemPromoFlag = x.itempromoflag != "N", ItemCategory1 = new[] { "1", "2", "31" }.Contains(x.itemcat1), ItemSaleStatus = x.itemsalestatus == "S", AvailableQuantity = x.itemqtyonhand - x.itemqtycommitted }) .Select(x => x.products_quantity = x.ItemPromoFlag ? 100000 : (x.ItemCategory1 && x.ItemSaleStatus) ? 100000 : x.itemsalestatus == "O" ? 0 : x.AvailableQuantity );</code>
Comprendre la conversion LINQ
Cette instruction LINQ projette un nouveau type anonyme qui contient le champ products_quantity existant et des propriétés supplémentaires contenant la valeur booléenne de l'expression conditionnelle. Il utilise ensuite une opération Select imbriquée pour attribuer de manière conditionnelle la valeur products_quantity calculée.
Exemple d'instruction CASE simple
L'exemple de code fourni pour convertir une simple instruction CASE en LINQ démontre l'utilisation d'expressions ternaires dans une clause Select :
<code class="language-csharp">Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 }; var numberText = ( from n in numbers where n > 0 select new { Number = n, Text = n == 1 ? "One" : n == 2 ? "Two" : n == 3 ? "Three" : "Unknown" } );</code>
Cette instruction utilise une expression ternaire pour attribuer une valeur de texte différente à un nombre en fonction de sa valeur. La syntaxe de l'expression ternaire est :
<code class="language-csharp">condition ? true_expression : false_expression</code>
Ces exemples illustrent comment convertir les instructions CASE en LINQ, fournissant un moyen concis et facile à gérer pour évaluer les conditions et attribuer des valeurs à vos données.
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!