У меня есть 4 экземпляра List<InputElement>
, которые содержат пару время-значение, похожую на это
public class InputElement
{
public MyTime Time;
public double Value;
}
MyTime
хранит время в формате: чч: мм: сс.ууууу - как TimeSpan
но с микросекундами и также хранит double TotalSeconds
- который показывает, ну, в общем, общее время в секундах (например, 00:01:02.00304 = 62.00034
), которое я использовал для сортировки списков
Каждый список загружен уже отсортирован по времени от самого раннего до последнегомомент и хранит различные типы значений.Таким образом, List1
содержит показатели скорости, List2
содержит расстояния и так далее.Длина всех списков составляет около 200 элементов
Я хочу поместить все 4 из них в один List<OutputElement>
, где OutputElement
выглядит так:
public class OutputElement
{
public MyTime Time;
public double Dp;
public double Or;
public double Speed;
public double Dist;
}
Проблема в том, что значения могут бытьв разные и одинаковые моменты, поэтому результат должен выглядеть примерно так:
mt1 1 NaN NaN NaN
mt2 NaN 3 2 NaN
mt3 2 7 NaN NaN
mt4 3 6 1 0
Здесь в момент mt1
я сохраняю только значение Dp
, потому что три других списка не содержат значения при этоммомент, поэтому три других значения NaN
.В то время как в момент mt4
у меня есть все четыре DataElements
, потому что все четыре списка содержат значение в тот момент.
Я пытался идти по прямому пути - создал бесконечный цикл while
, циклически повторяющий четыре списка с использованием четырех счетчиков
Каждый цикл после множества if
случаев я нахожу, какие счетчики увеличивать, а какие сохранять.После циклического перебора всех списков я прерываю цикл while
и выхожу.
Все это выглядит как комбинаторная адская дыра, и я был бы очень признателен за более простой подход?