Имена параметров можно получить из свойства Parameters
.
Например:
Expression<Action<string, int>> expr = (a, b) => (a + b).ToString();
var names = expr.Parameters.Select(p => p.Name); //Names contains "a" and "b"
Во второй части лямбда-выражения - это просто некомпилированные функции.
Их параметры не имеют значений, пока вы не скомпилируете выражение и не вызовете делегат с некоторыми значениями.
Если вы возьмете лямбда-выражение i => i.ToString()
, где есть значения параметров?