/// <summary>
        /// Get List of students for expulsion grouped by Group
        /// </summary>
        /// <returns></returns>
        public IEnumerable <IGrouping <string, SessionTableOfBothResult> > GetListOfStudentsForExpulsionGroupedByGroup()
        {
            List <SessionTableOfBothResult> asListSessionTableOfBothResults = new List <SessionTableOfBothResult>();

            foreach (NumberOfSession numberOfSessionItem in NumberOfSessions)
            {
                foreach (Group item in Groups)
                {
                    IEnumerable <Student>                  studentByGroupQuere             = Quere.StudentByGroupQuere(item, Student);
                    IEnumerable <ExamSchedule>             examSheduleByGroupQuere         = Quere.ExamSheduleByGroupQuere(item, ExamSchedule);
                    IEnumerable <SessionTableExamResult>   studentSessionResultExamQuere   = Quere.StudentSessionResultExamQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                    IEnumerable <SessionTableSetOffResult> studentSessionResultSetOffQuere = Quere.StudentSessionResultSetOffQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                    IEnumerable <SessionTableOfBothResult> sessionTableOfBothResultsQuere  = Quere.SessionTableOfBothResultsQuere(studentSessionResultExamQuere, studentSessionResultSetOffQuere, numberOfSessionItem);
                    asListSessionTableOfBothResults.AddRange(sessionTableOfBothResultsQuere);
                }
            }
            IEnumerable <SessionTableOfBothResult> sessionTableOfBothResults = asListSessionTableOfBothResults as IEnumerable <SessionTableOfBothResult>;

            IEnumerable <IGrouping <string, SessionTableOfBothResult> > listOfStudentsForExpulsionQuere =
                from SessionTableOfBothResult in sessionTableOfBothResults
                where SessionTableOfBothResult.ExamValue < 40
                group SessionTableOfBothResult by SessionTableOfBothResult.NumberOfGroup;

            return(listOfStudentsForExpulsionQuere);
        }
        /// <summary>
        /// Save all session result by group to EXCL tables
        /// </summary>
        public void SaveAllSessionResultByGroupToEXCLTables()
        {
            foreach (Group item in Groups)
            {
                IEnumerable <Student>                  studentByGroupQuere             = Quere.StudentByGroupQuere(item, Student);
                IEnumerable <ExamSchedule>             examSheduleByGroupQuere         = Quere.ExamSheduleByGroupQuere(item, ExamSchedule);
                IEnumerable <SessionTableExamResult>   studentSessionResultExamQuere   = Quere.StudentSessionResultExamQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                IEnumerable <SessionTableSetOffResult> studentSessionResultSetOffQuere = Quere.StudentSessionResultSetOffQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                IEnumerable <SessionTableOfBothResult> sessionTableOfBothResultsQuere  = Quere.SessionTableOfBothResultsQuere(studentSessionResultExamQuere, studentSessionResultSetOffQuere);

                SaveDataToEXCL(sessionTableOfBothResultsQuere, "AllResultsByGroup№" + item.NumberOfGroup);
            }
        }
        /// <summary>
        /// Save average minimum maximum value for each group ToEXCL Tables
        /// </summary>
        public void SaveAverageMinimumMaximumValueforEachGroupToEXCLTables()
        {
            foreach (NumberOfSession numberOfSessionItem in NumberOfSessions)
            {
                foreach (Group item in Groups)
                {
                    //IEnumerable<Group> groupQuere = Quere.GroupQuere()
                    IEnumerable <Student>                  studentByGroupQuere             = Quere.StudentByGroupQuere(item, Student);
                    IEnumerable <ExamSchedule>             examSheduleByGroupQuere         = Quere.ExamSheduleByGroupQuere(item, ExamSchedule);
                    IEnumerable <SessionTableExamResult>   studentSessionResultExamQuere   = Quere.StudentSessionResultExamQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                    IEnumerable <SessionTableSetOffResult> studentSessionResultSetOffQuere = Quere.StudentSessionResultSetOffQuere(StudentSessionResults, studentByGroupQuere, examSheduleByGroupQuere, item.NumberOfGroup);
                    IEnumerable <SessionTableOfBothResult> sessionTableOfBothResultsQuere  = Quere.SessionTableOfBothResultsQuere(studentSessionResultExamQuere, studentSessionResultSetOffQuere, numberOfSessionItem);

                    var minQueres =
                        from SessionTableOfBothResult in sessionTableOfBothResultsQuere
                        let minGroup = sessionTableOfBothResultsQuere.Min(n => n.ExamValue)
                                       select minGroup;

                    var minExamValue = minQueres.First();

                    var maxQueres =
                        from SessionTableOfBothResult in sessionTableOfBothResultsQuere
                        let maxGroup = sessionTableOfBothResultsQuere.Max(n => n.ExamValue)
                                       select maxGroup;

                    var maxExamValue = maxQueres.First();

                    var averageQueres =
                        from SessionTableOfBothResult in sessionTableOfBothResultsQuere
                        let averageGroup = sessionTableOfBothResultsQuere.Average(n => n.ExamValue)
                                           select averageGroup;

                    var averageExamValue = averageQueres.First();

                    SaveMaxMinAvereByGroupBySessionToEXCL(minExamValue, maxExamValue, averageExamValue, "AllResultsByGroup№" + item.NumberOfGroup, "BySession№" + numberOfSessionItem.NumOfSession);
                }
            }
        }