Вопрос новичка LINQ Expressions-
Expression<Func<TLookupModel, TValue>> idSelector;
IEnumerable<TLookupModel> source;
TValue id;
Я пытаюсь сделать (псевдокод):
source.AsQueryable().FirstOrDefault(x => idSelector == id)
Моя слабая попытка до сих пор:
var expressionParam = idSelector.Parameters.First();
ConstantExpression selectedValueConstant = Expression.Constant(id, typeof(TValue));
var idEqualExpression = Expression.Equal(idSelector, selectedValueConstant);
var lambda = Expression.Lambda<Func<TLookupModel, bool>>(idEqualExpression, expressionParam);
var selectedSourceItem = source.AsQueryable().FirstOrDefault(lambda);
Я думаю, это дает вам предположение о том, как я до сих пор думал. Я пробовал с параметрами и без параметров, различные комбинации вызовов методов Expression, пытаясь получить «параметр» из вызова FirstOrDefault()
, но после прочтения большого количества руководств я не могу понять, как расширить выражение-член, равное константе таким образом.