Вывод типа метода для лямбды требует, чтобы типы параметров лямбда были уже известны, прежде чем типы возвращаемых значений будут выведены. Так, например, если у вас было:
void M<A, B, C>(A a, Func<A, B> f1, Func<B, C> f2) { }
и звонок
M(1, a=>a.ToString(), b=>b.Length);
тогда мы сделаем вывод:
A is int, from the first argument
Therefore the second parameter is Func<int, B>.
Therefore the second argument is (int a)=>a.ToString();
Therefore B is string.
Therefore the third parameter is Func<string, C>
Therefore the third argument is (string b)=>b.Length
Therefore C is int.
And we're done.
Понимаете, нам нужно, чтобы А вычислил В, а В - чтобы выработать С. В вашем случае вы хотите вычислить Т из ... Т. И вы не можете этого сделать.