public IEnumerable <TimeInterval> FindCriticalMoments(IEnumerable <StateRecord> states) { var statesByMembers = states .OrderBy(state => state.CreateTime) .GroupBy(state => state.TeamMemberId); TimeInterval[] trainingMoments = new TimeInterval[0]; foreach (var statesOfPerson in statesByMembers) { var abnormalHeartRateIntervals = GetStressfulSpansForHealthIndicator( statesOfPerson, state => state.HeartRate, heartRateParameters) .ToArray(); var abnormalTemperatureIntervs = GetStressfulSpansForHealthIndicator( statesOfPerson, state => state.Temperature, temperatureParameters) .ToArray(); var criticalMoments = new[] { abnormalHeartRateIntervals, abnormalTemperatureIntervs }.SelectMany(intervals => intervals); trainingMoments = TimeInterval.MergeIntervals(trainingMoments.Concat(criticalMoments)).ToArray(); } return(trainingMoments); }