Compartir a través de


Simplificación de la expresión LINQ

Esta refactorización se aplica a lo siguiente:

  • C#

Qué: Refactoriza instancias de SomeEnumerableType.Where(<LambdaExpression>).Single() a SomeEnumerable.Single(<LambdaExpression>) para Enumerable.Single(), así como los siguientes métodos Enumerable: SingleOrDefault(), Last(), LastOrDefault(), Any(), Count(), First() y FirstOrDefault().

Cuándo: Todas las instancias en las que el método llama a Single(), SingleOrDefault(), etc., no tienen ningún argumento y van precedidas de una expresión Where(). La entrada de la expresión Where() no se puede construir como un árbol de expresión.

Por qué: al eliminar la llamada innecesaria al objeto enumerable del método .Where() se mejora la legibilidad y, en algunos casos, el rendimiento (consulte las observaciones).

Instrucciones

  1. Coloque el cursor dentro de la instancia de SomeEnumerableType.Where(<LambdaExpression>).Single() en Visual Studio.

  2. Presione Ctrl+. para activar el menú Acciones rápidas y refactorizaciones.

  3. Seleccione Simplify LINQ expression (Simplificar expresión LINQ).

    Convert typeof to nameof

Comentarios

En algunos casos, esta refactorización puede reducir el rendimiento. Las operaciones LINQ en List<T> y T[] no están optimizadas en este caso y producen un rendimiento peor.

Vea también