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.