using System; using System.Linq; using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.Models.Common; namespace EvoCalculator.Core.Base.Columns; public class BaseColumnWithXIRR : BaseColumn { protected BaseColumnWithXIRR(int count, BaseColumn dateTempColumn) : base(count) { Dates = dateTempColumn.Values; } protected BaseColumnWithXIRR(int count) : base(count) { } protected BaseColumnWithXIRR() { } public DateTime[] Dates { get; set; } private Flow[] Flows { get { var flows = new Flow[Values.Length]; for (var i = 0; i < Values.Length; i++) flows[i] = new Flow { Date = Dates[i], Value = Values[i] }; return flows; } } public double IRR { get { var XIRR = new XIRR(Flows); return XIRR.GetResult(); } } public void RoundValues(int precision = 2) { Values = Values.Select(x => Math.Round(x, precision)).ToArray(); } }