元のLinqは次のとおりです。
var developersUsingCSharp =
from d in developers
where d.Language == "C#"
select d.Name;
これは次のように記述できます。
Func<Developer, bool> filteringPredicate = d => d.Language == "C#";
Func<Developer, string> selectionPredicate = d => d.Name;
IEnumerable<string> developersUsingCSharp =
developers
.Where(filteringPredicate)
.Select(selectionPredicate);
上で Func <T,T> デリゲートを明示的に定義しました。だから
Func<Developer, bool> filteringPredicate = d => d.Language == "C#";
d は Developer 型で、戻り値の型は bool であることがわかっています。同様に、
Func<Developer, string> selectionPredicate = d => d.Name;
d は Developer 型であり、戻り値の型は文字列であることがわかっています。ただし、同じクエリの有効な形式に従うと、これらの型はどのように推測されますか。
IEnumerable<string> developersUsingCSharp =
developers
.Where(d => d.Language == "C#")
.Select(d => d.Name);