Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Proprietà | Valore |
|---|---|
| ID regola | IDE0120 |
| titolo | Semplificare l'espressione LINQ |
| categoria | Stile |
| sottocategoria | Regole di codice non necessarie (preferenze a livello di espressione) |
| lingue applicabili | C# e Visual Basic |
Panoramica
Questa regola contrassegna espressioni LINQ eccessivamente complesse, in particolare espressioni che chiamano Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) seguito da uno dei metodi seguenti:
- 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>)
Tali espressioni possono essere semplificate eliminando la chiamata a Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) e utilizzando invece un overload di Any(), Count(), First(), FirstOrDefault(), Last(), LastOrDefault(), Singleo SingleOrDefault(), che accetta una funzione predicato per filtrare gli elementi.
Opzioni
Questa regola non ha opzioni di stile di codice associate.
Esempio
// 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"));
Eliminare un avviso
Se si desidera eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità su none nel file di configurazione .
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
Per disabilitare tutte le regole di tipo codice, impostare la gravità per la categoria Style su none nel file di configurazione .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.