У меня есть обычный список диапазонов дат с определенным значением:
14.09.2012 - 31.12.2015 = 8.25
01.01.2016 - 13.06.2016 = 11.00
14.06.2016 - 18.09.2016 = 10.50
19.09.2016 - 26.03.2017 = 10.00
27.03.2017 - 01.05.2017 = 9.75
02.05.2017 - 18.06.2017 = 9.25
19.06.2017 - 17.09.2017 = 9.00
18.09.2017 - 29.10.2017 = 8.50
30.10.2017 - 17.12.2017 = 8.25
18.12.2017 - 11.02.2018 = 7.75
12.02.2018 - 25.03.2018 = 7.50
26.03.2018 - 16.09.2018 = 7.25
17.09.2018 - NOW = 7.50
Я ищу метод, который делит один диапазон входных данных на вышеуказанные диапазоны данных с учетом значения коэффициента.
Например, если у меня есть входной диапазон дат 01.01.2016
- 09.02.2016
, мне нужно получить один выходной диапазон дат и коэффициент:
01.01.2016 - 13.06.2016 = 11.00
Но если у меня есть диапазон ввода даты 01.01.2016 - 29.04.2017
, мне нужно получить следующие диапазоны и коэффициенты:
14.09.2012 - 31.12.2015 = 8.25
01.01.2016 - 13.06.2016 = 11.00
14.06.2016 - 18.09.2016 = 10.50
19.09.2016 - 26.03.2017 = 10.00
27.03.2017 - 01.05.2017 = 9.75
Класс для выходных данных:
public class OutputItem
{
public OutputItem()
{
}
public DateTime Start { get; set; } = new DateTime();
public DateTime End { get; set; } = new DateTime();
public double Coeff { get; set; } = 0;
}
Методчто я пытаюсь получить выходные данные
private List<OutputItem> GetOutput(DateTime start, DateTime end, List<OutputItem> specificRanges)
{
List<OutputItem> periods = new List<OutputItem>();
foreach (OutputItem sr in specificRanges)
{
if (start >= sr.Start && sr.End <= end)
{
periods.Add(new OutputItem { Start = sr.Start, End = sr.End, Coeff = sr.Coeff });
}
}
return periods;
}