Конвертировать foreach в присваивание переменной при возврате кортежа - PullRequest
0 голосов
/ 13 января 2020

Используя. NET Framework 4.7.2, у меня есть функция, которая возвращает Tuple, и возвращенные значения затем передаются другой функции в foreach l oop:

foreach ((var price, var discount) in Calculator.Compute(period, calculationComponent))
 {
  var rows = CreateCalculationRows(price, discount, otherParameters);
 }

The * Функция 1004 * объявлена ​​следующим образом:

public static IEnumerable<(Price price, DiscountInfo discount)> Compute(Price price, CalcComponent calcComponent) { 
  ...
}

Код работает нормально, но я хочу удалить foreach l oop, так как функция Calculator.Compute () при определенных условиях c которые всегда верны в этом конкретном случае c, возвращает одну строку. Я не могу упростить возвращаемый объект Compute (), поскольку он используется во многих других функциях.

Как изменить код для удаления foreach, чтобы CreateCalculationRows () правильно получал параметры?

1 Ответ

5 голосов
/ 13 января 2020

Я бы ожидал, что что-то вроде этого сработает - просто возьму один результат и разобью это:

(var price, var discount) = Calculator.Compute(period, calculationComponent).Single();
var rows = CreateCalculationRows(price, discount, otherParameters);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...