Есть ли способ объявить временные переменные в выражениях для повторного использования промежуточных результатов?
Мотивация заключается в том, чтобы по-прежнему иметь возможность использовать цепочки вызовов беглого стиля и методы выражения выражений, когда вам нужно использовать вычисленный результат более одного раза в логике или преобразованиях, например,
public static string Foo(IBar bar)
{
var result = bar.LongCalculation();
return result.HasError
? throw new Exception()
: result.ToString();
}
Я думал, что смогу использовать ключевые слова запроса let / select linq, но это невозможно без предложения from, например:
public static string Foo(IBar bar) =>
let result = bar.LongCalculation()
select result.HasError
? new Exception()
: result.ToString();