У меня есть запрос LINQ, который выглядит следующим образом:
public IEnumerable<Foo> SelectFooBars()
{
return
from
f in foos
join
b in bars
on f.BarId equals b.Id
select
AddMissingProp(f, b.MissingProp);
}
public void AddMissingProp(Foo foo, string missingProp) // substitute this with inline lambda
{
foo.MissingProp = missingProp;
return foo;
}
Я бы хотел избавиться от AddMissingProp
и использовать вместо этого некоторую форму лямбды в моем предложении select
.
Я пытался ...
...
select
(f, b) => { f.MissingProp = b.MissingProp; return f }
... но я получил следующую ошибку:
Локальная переменная с именем 'f' не может быть объявлена в этой области, поскольку она придала бы другое значение значению 'f', которое уже используется в области 'родительской или текущей' для обозначения чего-то другого.
Как я могу "лямбда-ize" мой запрос?
Обновление
Это также не работает:
...
select
() => { f.MissingProp = b.MissingProp; return f }
Я получаю следующую ошибку:
Неверно указан тип одного из выражений в предложении соединения. Ошибка вывода типа при вызове «Join».
Я не изменил предложение join
, поэтому я озадачен.