Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Egenskap | Värde |
---|---|
regel-ID | IDE0120 |
rubrik | Förenkla LINQ-uttryck |
Kategori | Stil |
underkategori | Onödiga kodregler (inställningar på uttrycksnivå) |
Tillämpliga språk | C# och Visual Basic |
Överblick
Den här regeln flaggar alltför komplexa LINQ-uttryck, särskilt uttryck som anropar Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) följt av någon av följande metoder:
- 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>)
Sådana uttryck kan förenklas genom att ta bort anropet till Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) och i stället anropa en överlagring av Any()
, Count()
, First()
, FirstOrDefault()
, Last()
, LastOrDefault()
, Single
eller SingleOrDefault()
som accepterar en predikatfunktion för att filtrera elementen.
Alternativ
Den här regeln har inga associerade kodformatalternativ.
Exempel
// 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"));
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
Om du vill inaktivera alla regler i kodformat anger du allvarlighetsgraden för kategorin Style
till none
i konfigurationsfilen .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.