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

  1. Coloque o cursor dentro da instância SomeEnumerableType.Where(<LambdaExpression>).Single() no Visual Studio.

  2. Pressione (Ctrl+.) para acionar o menu Ações Rápidas e Refatorações.

  3. Selecionar Simplificar a expressão LINQ

    Convert typeof to nameof

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.

Confira também