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
Coloque el cursor dentro de la instancia de
SomeEnumerableType.Where(<LambdaExpression>).Single()
en Visual Studio.Presione Ctrl+. para activar el menú Acciones rápidas y refactorizaciones.
Seleccione Simplify LINQ expression (Simplificar expresión LINQ).
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.