Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | IDE0120 |
| Título | Simplificar expressão LINQ |
| Categoria | Estilo |
| Subcategoria | Regras de código desnecessárias (preferências no nível da expressão) |
| idiomas aplicáveis | C# e Visual Basic |
Visão geral
Essa regra sinaliza expressões LINQ excessivamente complexas, especificamente expressões que chamam Enumerable.Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) seguidas por um dos seguintes métodos:
- 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>)
Essas expressões podem ser simplificadas removendo a chamada para Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) e, em vez disso, chamando uma sobrecarga de Any(), Count(), First(), FirstOrDefault(), Last(), LastOrDefault(), Single ou SingleOrDefault() que aceita uma função de predicado para filtrar os elementos.
Opções
Essa regra não tem opções de estilo de código associadas.
Exemplo
// 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"));
Suprimir um aviso
Se você quiser suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite a regra.
#pragma warning disable IDE0120
// The code that's violating the rule is on this line.
#pragma warning restore IDE0120
Para desabilitar a regra de um arquivo, pasta ou projeto, defina sua severidade como none no arquivo de configuração .
[*.{cs,vb}]
dotnet_diagnostic.IDE0120.severity = none
Para desabilitar todas as regras de estilo de código, defina a severidade da categoria Style para none no arquivo de configuração .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Para obter mais informações, consulte Como suprimir avisos de análise de código.