Expression.Call - chamando extensão linq: FirstOrDefault, Where

Estou tentando criar o seguinte dinamicamente, mas estou tendo problemas para chamar o método de extensãoFirstOrDefault:

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

Eu tenho o seguinte

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

Isso é bom, mas estou com um problema ao tentar ligar para oFirstOrDefault método:

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

Eu gostaria de receber

result ={e.Cars.FirstOrDefault()}

mas estou recebendo umInvalidOperationException

Nenhum método genérico 'FirstOrDefault' no tipo 'System.Linq.Queryable' é compatível com os argumentos e argumentos de tipo fornecidos. Nenhum argumento de tipo deve ser fornecido se o método não for genérico.

Qualquer ajuda seria muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion