Ну, для
public decimal[] Calculate(
IReadOnlyList<(decimal High, decimal Low, decimal Close)> candles,
int period) {...}
мы должны предоставить [IReadOnly]List
и int
(примечание .ToList()
):
Calculate(
list.Select(e => (e.High, e.Low, e.Close)).ToList(),
20);
, когда list.Select
равно не достаточно : это просто IEnumerable<T>
Редактировать: Возможно, вы захотите * перепроектировать Calculate
метод в
public decimal[] Calculate<T> (
IEnumerable<T> data,
int period,
Func<T, decimal> high,
Func<T, decimal> low,
Func<T, decimal> close) {
//TODO: validation here
List<(decimal High, decimal Low, decimal Close)> candles = data
.Select(item => (high(item), low(item), close(item)));
//TODO: logic from former Calculate here
}
И затем вызвать его как
Calculate(
list,
20,
item => item.High,
item => item.Low,
item => item.Close);