Expression.Call - Aufrufen der Linq-Erweiterung: FirstOrDefault, Where
Ich versuche Folgendes dynamisch zu erstellen, habe jedoch Probleme beim Aufrufen der ErweiterungsmethodeFirstOrDefault
:
using(var context = new Entities())
{
var list = context.Engines.Include("Cars").Select(e => e.Cars.FirstOrDefault()).ToList();
}
Ich habe die folgenden
Expression parameter = Expression.Parameter(typeof(Engine), "e");
Expression property = Expression.Property(parameter, "Cars");
parameter ={e}
property ={e.Cars}
Diese sind gut, aber ich stoße auf ein Problem, wenn ich versuche, das @ aufzurufeFirstOrDefault
Methode
var result = Expression.Call(typeof(Queryable), "FirstOrDefault", new type[] { typeof(Car)}, property);
Ich hätte ger
result ={e.Cars.FirstOrDefault()}
aber ich bekomme einInvalidOperationException
Keine generische Methode 'FirstOrDefault' für den Typ 'System.Linq.Queryable' ist mit den angegebenen Typargumenten und Argumenten kompatibel. Wenn die Methode nicht generisch ist, sollten keine Typargumente angegeben werden.
Jede Hilfe wäre sehr dankbar.