Выражение. Вызов - Вызов расширения linq: FirstOrDefault, Where

Я пытаюсь создать следующее динамически, однако у меня возникают проблемы с вызовом метода расширения FirstOrDefault :

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

У меня есть следующий

Expression parameter = Expression.Parameter(typeof(Engine), "e");
Expression property = Expression.Property(parameter, "Cars");
  • параметр = {e}
  • property = {e.Cars}

Они хороши, но у меня возникает проблема, когда я попробуйте вызвать метод FirstOrDefault :

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

Я хотел бы получить

  • result = {e.Cars.FirstOrDefault ()}

, но я получаю InvalidOperationException

Ни один общий метод 'FirstOrDefault' для типа 'System.Linq.Queryable' не совместим с аргументами и аргументами предоставленного типа . Аргументы типа не должны предоставляться, если метод не является универсальным.

Любая помощь будет принята с благодарностью.

6
задан SurvivalMachine 3 September 2018 в 14:16
поделиться