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.