次のような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'とは異なる意味を与えるため、このスコープでは宣言できません。これは、'親または現在の'スコープで他の何かを示すためにすでに使用されています。
クエリを「ラムダ化」するにはどうすればよいですか?
アップデート
これも機能しません:
...
select
() => { f.MissingProp = b.MissingProp; return f }
次のエラーが発生します。
join句の式の1つの型が正しくありません。'Join'の呼び出しで型推論が失敗しました。
条項をまったく変更しなかったjoin
ので、困惑しています。