public async Task <int?> GetPossiblePositionForCurrentSkier(int raceId) { var current = await GetCurrentSkier(raceId); if (current == null) { return(null); } var lastTimeData = (await _timeDataDao.GetTimeDataForStartList(current.SkierId, current.RaceId)) .OrderByDescending(td => td?.Sensor?.SensorNumber) .First(); var diff = await _statService.GetDifferenceToLeader(lastTimeData); if (diff == null) { return(1); } var ranking = await _statService.GetFinishedSkierRanking(raceId); return(1 + ranking ?.TakeWhile(raceRanking => (raceRanking?.TimeToLeader ?? 0) < diff.Value.TotalMilliseconds) .Count()); }