es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál de estas consultas de LINQ tiene mejor rendimiento?

¿En el contexto de Entity Framework, cuál de estas consultas se lleva a cabo mejor?

var resultado = Items.OrderByDescending(t => t.Created)
.FirstOrDefault(a => a.ID == ItemID)?.ItemName;

o

var resultado = Items.Where(a => a.ID == ItemID)
.OrderByDescending(t => t.Created)
.FirstOrDefault()?.ItemName;

¿Hay algún lugar donde pueda leer acerca de cómo se convierten estas consultas LINQ a SQL en este caso?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En el contexto de Entity Framework, la segunda consulta tiene un mejor rendimiento ya que aplica el filtro (Where) primero en la columna ID, reduciendo el número de filas que se ordenan (OrderByDescending) y evalúan en la llamada FirstOrDefault.

    Al traducir estas consultas LINQ a SQL, Entity Framework traduce la consulta LINQ a un árbol de expresión y luego a SQL. En este caso, ambas consultas LINQ se traducen en consultas SQL similares, con solo pequeñas diferencias en el orden de las operaciones.

    Para obtener más información sobre cómo se convierten las consultas LINQ a SQL en Entity Framework, la documentación de Microsoft proporciona una explicación detallada: https://docs.microsoft.com/en-us/ef/core/querying/linq/translated-to-sql

Comments are closed.