Simplificar a expressão LINQ
Esta refatoração aplica-se a:
- C#
What: refatora instâncias de SomeEnumerableType.Where(<LambdaExpression>).Single()
para SomeEnumerable.Single(<LambdaExpression>)
de Enumerable.Single()
, além dos seguintes métodos Enumeráveis: SingleOrDefault()
, Last()
, LastOrDefault()
, Any()
, Count()
, First()
e FirstOrDefault()
.
Quando: todas as instâncias em que as chamadas de método Single()
, SingleOrDefault()
e assim por diante não têm argumentos e são precedidas por uma expressão Where()
. A entrada para a expressão Where()
não pode ser construída como uma árvore de expressão.
Why: remover a chamada desnecessária para o Enumerável do método .Where()
melhora a legibilidade e, em alguns casos, o desempenho; consulte os comentários.
Como fazer
Coloque o cursor dentro da instância
SomeEnumerableType.Where(<LambdaExpression>).Single()
no Visual Studio.Pressione (Ctrl+.) para acionar o menu Ações Rápidas e Refatorações.
Selecionar Simplificar a expressão LINQ
Comentários
Em alguns casos, essa refatoração pode reduzir o desempenho. As operações LINQ em List<T>
e T[]
não são otimizadas nesse caso e resultam em um desempenho pior.