Próbuję utworzyć następujące dynamicznie, jednak mam problemy z wywołaniem metody rozszerzenie "FirstOrDefault"Expression.Call - Calling rozszerzenie LINQ: FirstOrDefault Gdzie
using(var context = new Entities())
{
var list = context.Engines.Include("Cars").Select(e => e.Cars.FirstOrDefault()).ToList();
}
Mam następujący
Expression parameter = Expression.Parameter(typeof(Engine), "e");
Expression property = Expression.Property(parameter, "Cars");
- parametr = {e}
- właściwość = {e.Cars}
Są dobre, ale ja napotykają problem, gdy próbuję i wywołać metodę FirstOrDefault
var result = Expression.Call(typeof(Queryable), "FirstOrDefault", new type[] { typeof(Car)}, property);
Chciałbym dostać
- wynik = {e.Cars.FirstOrDefault()}
ale jestem coraz InvalidOperationException
Brak ogólnej metody "FirstOrDefault" na typ "System.Linq.Queryable" jest kompatybilny z dostarczonymi argumentami i argumentami typu: . Nie należy podawać argumentów typu , jeśli metoda nie jest generyczna.
Każda pomoc będzie bardzo cenna.
Dzięki. Adam
Czy możesz wyjaśnić? FirstOrDefault nie jest * zwykle * częścią lambda, więc nie musi być zaangażowany w Expression –
Moim celem jest stworzenie lambda wewnątrz lamda, więc coś takiego: .Where (e => e.Cars .Where (c => c.Name == "Honda"). Count> 0) Czy to coś wyjaśnia lub jestem zdezorientowany? – Aducci