示例#1
0
        private List <GroupedAttemptsByLesson> GetGroupedAttempts()
        {
            var groupedAttempts = new List <GroupedAttemptsByLesson>();

            if (Attempts == null || Attempts.Count == 0)
            {
                return(groupedAttempts);
            }

            foreach (var groupedItems in Attempts.OrderBy(x => x.Lesson.LessonOrder).GroupBy(x => x.LessonID))
            {
                int     highScore        = groupedItems.Max(x => x.Score);
                Attempt highScoreAttempt = groupedItems.OrderByDescending(x => x.DateCompleted).First(x => x.Score == highScore);
                groupedAttempts.Add(new GroupedAttemptsByLesson()
                {
                    Lesson        = groupedItems.First().Lesson,
                    TotalAttempts = groupedItems.First().AttemptID == -1 && groupedItems.Count() == 1 ? 0 :  groupedItems.Count(),
                    TotalTimes    = groupedItems.Sum(x => x.TimeToComplete),
                    HighScore     = highScore,
                    DateCompleted = highScoreAttempt.DateCompleted,
                    Infractions   = highScoreAttempt.Infractions,
                    IsComplete    = highScoreAttempt.IsComplete
                });
            }

            return(groupedAttempts);
        }