/// <summary>
        /// Get list of average marks method
        /// </summary>
        public ICollection <AverageMarksBySubjectsInOneYear> GetAverageMarks()
        {
            List <AverageMarksBySubjectsInOneYear> result = new List <AverageMarksBySubjectsInOneYear>();

            foreach (Session ses in Sessions)
            {
                AverageMarksBySubjectsInOneYear oneYear = new AverageMarksBySubjectsInOneYear();
                oneYear.Year = ses.AcademicYears;
                foreach (Subject item in Subjects)
                {
                    List <WorkResult> wresults = WorkResults.Where(w => w.SubjectId == item.Id).ToList();
                    double            sum      = 0;
                    int count = 0;
                    foreach (WorkResult res in wresults)
                    {
                        if (int.TryParse(res.Result, out int a))
                        {
                            sum += a;
                            count++;
                        }
                    }
                    if (count != 0)
                    {
                        double average = sum / count;
                        oneYear.AverageMarks.Add(new AverageMarkBySubject(item.SubjectName, Math.Round(average, 2)));
                    }
                }
                result.Add(oneYear);
            }
            return(result);
        }
        /// <summary>
        /// Get list of average marks method
        /// </summary>
        /// <param name="func">Property for sorting</param>
        /// <param name="type">Sorting type</param>
        /// <returns></returns>
        public ICollection <AverageMarksBySubjectsInOneYear> GetAverageMarks(Func <AverageMarkBySubject, object> func, SortType type)
        {
            List <AverageMarksBySubjectsInOneYear> result = new List <AverageMarksBySubjectsInOneYear>();

            foreach (Session ses in Sessions)
            {
                AverageMarksBySubjectsInOneYear oneYear = new AverageMarksBySubjectsInOneYear();
                oneYear.Year = ses.AcademicYears;
                foreach (Subject item in Subjects)
                {
                    List <WorkResult> wresults = WorkResults.Where(w => w.SubjectId == item.Id).ToList();
                    double            sum      = 0;
                    int count = 0;
                    foreach (WorkResult res in wresults)
                    {
                        if (int.TryParse(res.Result, out int a))
                        {
                            sum += a;
                            count++;
                        }
                    }
                    if (count != 0)
                    {
                        double average = sum / count;
                        oneYear.AverageMarks.Add(new AverageMarkBySubject(item.SubjectName, Math.Round(average, 2)));
                    }
                }
                result.Add(oneYear);
            }
            List <AverageMarksBySubjectsInOneYear> r = new List <AverageMarksBySubjectsInOneYear>();

            if (type == SortType.Ascending)
            {
                foreach (AverageMarksBySubjectsInOneYear item in result)
                {
                    r.Add(new AverageMarksBySubjectsInOneYear(item.Year, item.AverageMarks.OrderBy(func).ToArray()));
                }
            }
            else
            {
                foreach (AverageMarksBySubjectsInOneYear item in result)
                {
                    r.Add(new AverageMarksBySubjectsInOneYear(item.Year, item.AverageMarks.OrderByDescending(func).ToArray()));
                }
            }
            return(r);
        }