Expression.Call - Llamando a la extensión linq: FirstOrDefault, Where

Estoy tratando de crear lo siguiente dinámicamente, sin embargo, tengo problemas para llamar al método de extensiónFirstOrDefault:

 using(var context = new Entities())
 {
     var list = context.Engines.Include("Cars").Select(e => e.Cars.FirstOrDefault()).ToList();
 }

Tengo lo siguiente

Expression parameter = Expression.Parameter(typeof(Engine), "e");
Expression property = Expression.Property(parameter, "Cars");
parámetro ={e}propiedad ={e.Cars}

Esos son buenos, pero me encuentro con un problema cuando intento llamar alFirstOrDefault método:

var result = Expression.Call(typeof(Queryable), "FirstOrDefault", new type[] { typeof(Car)}, property);

Me gustaría conseguir

resultado ={e.Cars.FirstOrDefault()}

pero estoy obteniendo unInvalidOperationException

Ningún método genérico 'FirstOrDefault' en el tipo 'System.Linq.Queryable' es compatible con los argumentos y argumentos de tipo suministrados. No se deben proporcionar argumentos de tipo si el método no es genérico.

Cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(1)

Su respuesta a la pregunta