Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | IDE0120 |
| Título | Simplifique a 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
Esta 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>)
Tais 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(), Singleou SingleOrDefault() que aceita uma função predicada para filtrar os elementos.
Opções
Esta 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 única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e, em seguida, reativar 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 para um arquivo, pasta ou projeto, defina sua gravidade 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 como 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.
Ver também
- Regras linguísticas
- de referência de regras de estilo de código