Simplifier une expression LINQ
Cette refactorisation s’applique à :
- C#
Quoi : Refactorise les instances de SomeEnumerableType.Where(<LambdaExpression>).Single()
en SomeEnumerable.Single(<LambdaExpression>)
pour Enumerable.Single()
ainsi que les méthodes Enumerable suivantes : SingleOrDefault()
, Last()
, LastOrDefault()
, Any()
, Count()
, First()
et FirstOrDefault()
.
Quand : toutes les instances où la méthode appelle Single()
, SingleOrDefault()
et ainsi de suite, n’a pas d’arguments et est précédée d’une expression Where()
. L’entrée de l’expression Where()
ne peut pas être construite en tant qu’arborescence d’expression.
Pourquoi : la suppression de l’appel inutile à Enumerable pour la méthode .Where()
améliore la lisibilité et, dans certains cas, les performances (voir les remarques).
Procédures
Placez votre curseur dans l’instance
SomeEnumerableType.Where(<LambdaExpression>).Single()
dans Visual Studio.Appuyez sur Ctrl+. pour déclencher le menu Actions rapides et refactorisations.
Sélectionnez Simplifier l’expression LINQ.
Remarques
Dans certains cas, cette refactorisation peut réduire les performances. Les opérations LINQ sur List<T>
et T[]
ne sont pas optimisées dans ce cas et entraînent une baisse des performances.