public TimeSpan CalculateTimeToLongerEvent() { ArffEvent previousWork = (ArffEvent)Previous; while (previousWork != null) { if (previousWork.Duration > Duration) { break; } else { previousWork = (ArffEvent)previousWork.Previous; } } ArffEvent nextWork = (ArffEvent)Next; while (nextWork != null) { if (nextWork.Duration > Duration) { break; } else { nextWork = (ArffEvent)nextWork.Next; } } if (previousWork == null && nextWork == null) { return(MaxDuration); } if (previousWork == null) { return(nextWork.StartTime.Subtract(StartTime)); } if (nextWork == null) { return(StartTime.Subtract(previousWork.StartTime)); } else { return((StartTime.Subtract(previousWork.StartTime) < nextWork.StartTime.Subtract(StartTime)) ? StartTime.Subtract(previousWork.StartTime) : nextWork.StartTime.Subtract(StartTime)); } }
public EventsArff Load(Events events) { EventsArff eventsArff = new EventsArff(); IEnumerable <Event> eventsSortedChannel = Enumerable.OrderBy(events, n => n.Channel); IEnumerable <Event> eventsSorted = Enumerable.OrderBy(eventsSortedChannel, n => n.StartTime); foreach (Event @event in eventsSorted) { ArffEvent eventArff = new ArffEvent(@event, events.Duration); eventsArff.Add(eventArff); } eventsArff.UpdateLinkedList(); eventsArff.CalculateProperties(); eventsArff.UpdateOriginalVolume(); return(eventsArff); }