/// <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); }