Maison >développement back-end >C++ >Syntaxe fluide par rapport à l'expression de la requête dans LINQ: Quand dois-je utiliser lequel?

Syntaxe fluide par rapport à l'expression de la requête dans LINQ: Quand dois-je utiliser lequel?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-27 08:21:08407parcourir

Fluent Syntax vs. Query Expression in LINQ: When Should I Use Which?

Requête LINQ : Comparaison de la syntaxe fluide et des expressions de requête

LINQ propose deux méthodes de requête : la syntaxe fluide et la syntaxe de l'expression de requête. Les deux peuvent implémenter des opérations de requête, mais ils sont différents dans les scénarios applicables.

Syntaxe courante

La syntaxe Fluent est similaire à C#, utilisant des chaînes de méthodes pour créer des requêtes. Pour les requêtes simples, il est généralement plus concis et a accès à tous les opérateurs de requête.

Syntaxe des expressions de requête

La syntaxe des expressions de requête est similaire à SQL, ce qui la rend plus facile à lire et à utiliser. Cela fonctionne bien dans les scénarios où plusieurs variables de portée sont requises, comme l'utilisation du mot-clé « let », plusieurs générateurs ou des requêtes de jointure.

Exemple : plusieurs variables de portée

Voici un exemple utilisant la syntaxe d'une expression de requête :

<code class="language-csharp">from fullName in fullNames
from name in fullName.Split()
orderby fullName, name
select name + " came from " + fullName;</code>

Pour utiliser une syntaxe fluide, vous devez écrire comme ceci :

<code class="language-csharp">fullNames
  .SelectMany(fName => fName.Split().Select(name => new { name, fName }))
  .OrderBy(x => x.fName)
  .ThenBy(x => x.name)
  .Select(x => x.name + " came from " + x.fName);</code>

De toute évidence, la syntaxe de l'expression de requête est plus claire et plus facile à comprendre dans les cas où plusieurs variables de portée sont impliquées.

Mélanger

Pour combiner les avantages des deux syntaxes, elles peuvent être mélangées dans les requêtes LINQ. Par exemple :

<code class="language-csharp">var query =
  from c in db.Customers
  let totalSpend = c.Purchases.Sum(p => p.Price)    // 此处使用方法语法
  where totalSpend > 1000
  from p in c.Purchases
  select new { p.Description, totalSpend, c.Address.State };</code>

Cet exemple utilise la syntaxe de la méthode dans l'opération "Somme" tout en conservant la lisibilité de la syntaxe de l'expression de requête dans la requête globale. La syntaxe à choisir dépend du scénario spécifique et des préférences personnelles. Une utilisation flexible des deux syntaxes peut améliorer la lisibilité et l'efficacité du code.

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