Simplifier une expression LINQ (IDE0120)
Propriété | Value |
---|---|
Identificateur de la règle | IDE0120 |
Titre | Simplifier une expression LINQ |
Catégorie | Style |
Sous-catégorie | Règles de code inutiles (préférences relatives au niveau de l’expression) |
Langages applicables | C# et Visual Basic |
Vue d’ensemble
Cette règle signale les expressions LINQ trop complexes, en particulier les expressions qui appellent Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) suivies de l’une des méthodes suivantes :
- Any<TSource>(IEnumerable<TSource>)
- Count<TSource>(IEnumerable<TSource>)
- First<TSource>(IEnumerable<TSource>)
- FirstOrDefault<TSource>(IEnumerable<TSource>)
- Last<TSource>(IEnumerable<TSource>)
- LastOrDefault<TSource>(IEnumerable<TSource>)
- Single<TSource>(IEnumerable<TSource>)
- SingleOrDefault<TSource>(IEnumerable<TSource>)
Ces expressions peuvent être simplifiées en supprimant l’appel à et en appelant à Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) la place une surcharge de Any()
, Count()
, First()
FirstOrDefault()
, Last()
, LastOrDefault()
Single
ou SingleOrDefault()
qui accepte une fonction de prédicat pour filtrer les éléments.
Options
Cette règle n’a pas d’option de style de code associée.
Exemple
// Code with violations.
IEnumerable<string> words = new List<string> { "hello", "world", "!" };
var result = words.Where(x => x.Equals("hello")).Any();
// Fixed code.
IEnumerable<string> words = new List<string> { "hello", "world", "!" };
var result = words.Any(x => x.Equals("hello"));
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
Pour désactiver toutes les règles de style de code, définissez la gravité de la catégorie Style
sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.