static void Main(string[] args)
        {
            // List<int> cohortStudentCount = new List<int>()
            // {
            //     25, 12, 28, 22, 11, 25, 27, 24, 19
            // };

            // double avg = cohortStudentCount.Average();
            // int sum = cohortStudentCount.Sum();
            // IEnumerable<int> biggest = cohortStudentCount.OrderByDescending(count => count).Take(3);
            // int smallest = cohortStudentCount.Min();

            // List<int> doubledCohortSizes = cohortStudentCount.Select(studentCount => studentCount * 2).ToList();

            // doubledCohortSizes.ForEach(n => Console.WriteLine($"Doubled number: {n}"));

            // List<int> idealCohortSizes = cohortStudentCount.Where(count => count < 20 && count > 10).OrderBy(n => n).ToList();

            // List<int> idealCohortSizes = (from count in cohortStudentCount where count < 20 && count > 10 orderby count select count).ToList();

            // idealCohortSizes.ForEach(n => Console.WriteLine($"Ideal cohort size: {n}"));



            //  Using only a `foreach` loop and basic arithmetic:

            // 1. Find the average number of students per cohort.
            // int sum = 0;
            // int count = 0;
            // int largestCohort = 0;

            // foreach(int studentCount in cohortStudentCount){
            //     sum += studentCount;
            //     count ++;
            //     if(studentCount > largestCohort){
            //         largestCohort = studentCount;
            //     }
            // }

            // int smallestCohort = largestCohort;
            // foreach(int studentCount in cohortStudentCount){
            //     if(studentCount < smallestCohort){
            //         smallestCohort = studentCount;
            //     }
            // }

            // Console.WriteLine(sum);
            // int average = sum/count;
            // Console.WriteLine(average);
            // Console.WriteLine(smallestCohort);
            // Console.WriteLine(largestCohort);
            // 2. Find the total number of students who graduated in the past year.
            // 3. How many students were in the biggest cohort?

            // 4. How many students were in the smallest?

            // ---------- Lightning Exercise 2 -------------- //

            // Find the words in the collection that start with the letter 'L'
            List <string> fruits = new List <string>()
            {
                "Lemon", "Apple", "Orange", "Lime", "Watermelon", "Loganberry"
            };

            List <string> LFruits = (from fruit in fruits where fruit[0].ToString() == "L" select fruit).Take(2).ToList();

            // foreach(string fruit in LFruits){
            //     Console.WriteLine(fruit);
            // }

            // LFruits.ForEach(fruit => Console.WriteLine(fruit));


            // var LFruits = fruits.Where(f => f.Substring(0, 1) == "L");

            // var LFruits = fruits.Where(f => f.StartsWith("L"));


            // Which of the following numbers are multiples of 4 or 6
            List <int> numbers = new List <int>()
            {
                15, 8, 21, 24, 32, 13, 30, 12, 7, 54, 48, 4, 49, 96
            };

            IEnumerable <int> fourSixMultiples = numbers.Where(num => num % 4 == 0 || num % 6 == 0);

            IEnumerable <int> multiples = from number in numbers where number % 4 == 0 || number % 6 == 0 select number;

            // Order these student names alphabetically, in descending order (Z to A)
            List <string> names = new List <string>()
            {
                "Heather", "James", "Xavier", "Michelle", "Brian", "Nina",
                "Kathleen", "Sophia", "Amir", "Douglas", "Zarley", "Beatrice",
                "Theodora", "William", "Svetlana", "Charisse", "Yolanda",
                "Gregorio", "Jean-Paul", "Evangelina", "Viktor", "Jacqueline",
                "Francisco", "Tre"
            };

            List <string> descend = names.OrderByDescending(n => n).ToList();

            IEnumerable <string> anotherTry = from taco in names orderby taco descending select taco;

            // Build a collection of these numbers sorted in ascending order
            List <int> nums = new List <int>()
            {
                15, 8, 21, 24, 32, 13, 30, 12, 7, 54, 48, 4, 49, 96
            };

            IEnumerable <int> ascending    = nums.OrderBy(n => n);
            IEnumerable <int> ascendingTwo = from num in nums orderby num select num;



            // --------- Create some instances of our classes ---------- //
            Cohort one       = new Cohort("Cohort 1");
            Cohort twentySix = new Cohort("Cohort 26");


            // Current Students
            Student David = new Student("David", "Bird", "Student at Mountwest", "JavaScript");


            Student Tommy = new Student("Tommy", "Spurlock", "Salsa Dance Instructor", "C#");


            Student Nikki = new Student("Nikki", "Ash", "Student at Mountwest", "JavaScript");



            // Previous Students
            Student Shu = new Student("Shu", "Sajid", "MRI Tech", "C#")
            {
                monthsToHire   = 2,
                startingSalary = 50000
            };
            // Shu.monthsToHire = 2;
            // Shu.startingSalary = 50000;

            Student Natasha = new Student("Natasha", "Cox", "Teacher", "JavaScript");

            Natasha.monthsToHire   = 0.25;
            Natasha.startingSalary = 52000;

            Student Leah = new Student("Leah", "Gwin", "Marketing", "C#");

            Leah.monthsToHire   = 0.5;
            Leah.startingSalary = 51000;

            Student Seth = new Student("Seth", "Dana", "Wine maker", "SQL");

            Seth.monthsToHire   = 1;
            Seth.startingSalary = 54000;


            // We used method overriding so that the enrollStudent method can take either one student at a time, or a whole list of them
            one.enrollStudent(David);
            one.enrollStudent(Nikki);
            one.enrollStudent(Tommy);



            one.enrollStudent(new List <Student>()
            {
                Tommy, Nikki
            });

            twentySix.enrollStudent(new List <Student>()
            {
                Shu, Natasha, Leah, Seth
            });

            List <Cohort> allCohorts = new List <Cohort>()
            {
                one, twentySix
            };

            // ------- Data Questions ---------//

            // Let's get a list of the total number of students in each cohort, like the one we started out with
            // .Select() is the new .map()
            List <int> cohortSizes = allCohorts.Select(cohort => cohort.Students.Count).ToList();

            cohortSizes.ForEach(c => Console.WriteLine(c));

            // Which students in Cohort One like C# best?
            // .Where() is the new .filter()

            var cSharpStudents = one.Students.Where(singleStudent => singleStudent.FavoriteLanguage == "C#");

            IEnumerable <Student> cSharpStudents2 = from student in one.Students where student.FavoriteLanguage == "C#" select student;

            // TODO: Get all the students who like C# from all available cohorts?

            // Let's look at a report of how many students in cohort one favor different languages in cohort one
            // JavaScript - 2
            // C# - 1
            var studentReport = from student in one.Students
                                group student by student.FavoriteLanguage into
                                // languageGroup is an IGrouping<string, Student>
                                languageGroup
                                select new Dictionary <string, int>()
            {
                { languageGroup.Key, languageGroup.Count() }
            };



            // Build a report for each cohort in the allCohorts List
            // Use the ReportItem class
            IEnumerable <ReportItem> cohortReport = from cohort in allCohorts
                                                    select new ReportItem()
            {
                CohortName            = cohort.Name,
                numberOfStudents      = cohort.Students.Count(),
                averageMonthsToHire   = cohort.Students.Select(s => s.monthsToHire).Average(),
                averageStartingSalary = cohort.Students.Select(s => s.startingSalary).Average()
            };

            foreach (ReportItem item in cohortReport)
            {
                Console.WriteLine("----------");
                Console.WriteLine(item.CohortName);
                Console.WriteLine(item.averageMonthsToHire);
                Console.WriteLine(item.averageStartingSalary);
                Console.WriteLine(item.numberOfStudents);
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            // Create a few instances of cohorts

            Cohort CohortOne = new Cohort("Cohort One");

            Cohort CohortTwo = new Cohort("Cohort Two");

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Sable",
                LastName         = "Bowen",
                FavoriteLanguage = "C#",
                monthsToHire     = 4,
                startingSalary   = 47000
            });

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Matt",
                LastName         = "Rowe",
                FavoriteLanguage = "JavaScript",
                monthsToHire     = 3,
                startingSalary   = 49000
            });

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Sydney",
                LastName         = "Wait",
                FavoriteLanguage = "JavaScript",
                monthsToHire     = 3,
                startingSalary   = 49000
            });

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Joey",
                LastName         = "Wellman",
                FavoriteLanguage = "C#",
                startingSalary   = 45000,
                monthsToHire     = 1
            });

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Josh",
                LastName         = "Havey",
                FavoriteLanguage = "C#",
                startingSalary   = 43000,
                monthsToHire     = 3
            });

            CohortOne.StudentList.Add(new Student()
            {
                FirstName        = "Connor",
                LastName         = "Fitzgerald",
                FavoriteLanguage = "C#",
                startingSalary   = 41000,
                monthsToHire     = 3
            });



            CohortTwo.StudentList.Add(new Student()
            {
                FirstName        = "Luke",
                LastName         = "Miller",
                FavoriteLanguage = "JavaScript"
            });

            Cohort CohortThree = new Cohort("Cohort Three")
            {
                StudentList = new List <Student>()
                {
                    new Student()
                    {
                        FirstName        = "Dan",
                        LastName         = "McGee",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Frank",
                        LastName         = "McGee",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Janice",
                        LastName         = "McGee",
                        FavoriteLanguage = "C#"
                    },
                    new Student()
                    {
                        FirstName        = "Lila",
                        LastName         = "McGee",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Chris",
                        LastName         = "McGee",
                        FavoriteLanguage = "C#"
                    },
                }
            };

            Cohort CohortFour = new Cohort("Cohort Four")
            {
                StudentList = new List <Student>()
                {
                    new Student()
                    {
                        FirstName        = "Mary",
                        LastName         = "Franklin",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Sarah",
                        LastName         = "Franklin",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Jake",
                        LastName         = "Franklin",
                        FavoriteLanguage = "C#"
                    }
                }
            };

            Cohort CohortFive = new Cohort("Cohort Five")
            {
                StudentList = new List <Student>()
                {
                    new Student()
                    {
                        FirstName        = "Michael",
                        LastName         = "Delores",
                        FavoriteLanguage = "C#"
                    },
                    new Student()
                    {
                        FirstName        = "Janelle",
                        LastName         = "Delores",
                        FavoriteLanguage = "C#"
                    },
                    new Student()
                    {
                        FirstName        = "Lisa",
                        LastName         = "Delores",
                        FavoriteLanguage = "JavaScript"
                    },
                    new Student()
                    {
                        FirstName        = "Mark",
                        LastName         = "Delores",
                        FavoriteLanguage = "C#"
                    },
                }
            };



            // ----- Math -------//

            List <Cohort> allCohorts = new List <Cohort>()
            {
                CohortOne, CohortTwo, CohortThree, CohortFour, CohortFive
            };

            // .length --> .Count()

            // .map() -- > .Select()

            List <int> cohortCounts = allCohorts.Select(singleCohort => singleCohort.StudentList.Count()).ToList();

            Console.WriteLine();


            // Find the average cohort size
            // .Average()

            double average = cohortCounts.Average();

            // Find the total number of students in all the cohorts

            int totalNumberOfStudents = cohortCounts.Sum();

            // Which cohort is the largest?
            int largestClassSize = cohortCounts.Max();

            // Find the largest three cohorts
            List <Cohort> topThreeCohorts = allCohorts.OrderByDescending(singleCohort => singleCohort.StudentList.Count()).Take(3).ToList();



            // Find the cohorts that have fewer than 5 people
            // .filter()
            List <Cohort> tinyCohorts = allCohorts.Where(singleCohort => singleCohort.StudentList.Count() < 5).ToList();

            Console.WriteLine();


            // -------- LIGHTNING EXERCISE ----------//
            //         1. Copy and paste the following list of grades into `Program.cs`.
            List <int> studentGrades = new List <int>()
            {
                57, 99, 87, 83, 85, 90, 86, 78, 79, 61, 93, 88, 82, 78
            };
            // - What was the average grade in this class?
            double avgGrade = studentGrades.Average();
            // - What was the highest grade?
            int largestGrade = studentGrades.Max();
            // - What was the lowest grade?
            int smallestGrade = studentGrades.Min();
            // - To pass the class, you have to make above a 65. Use linq to figure out how many students passed.

            // make a list
            // compare to 65 with .Where()
            // Count how many people are in the list

            // int numberOfPassingStudents = studentGrades.Where(singleGrade => singleGrade >= 65).Count();

            var passingGrades = from singleGrade in studentGrades where singleGrade >= 65 select singleGrade;

            int numberOfPassingGrades = passingGrades.Count();

            List <int> topFiveGrades = studentGrades.OrderByDescending(grade => grade).Take(5).ToList();

            // IEnumerable<int> topFiveGrades = from singleGrade in studentGrades orderby descending select singleGrade;



            // ---- Data questions (we haven't been over these yet) ----///

            // Which students in Cohort One like C# best?
            List <Student> CSharpStudents = CohortOne.StudentList.Where(student => student.FavoriteLanguage == "C#").ToList();

            var cstudnets = from student in CohortOne.StudentList where student.FavoriteLanguage == "C#" select student;


            // Let's look at a report of how many students in cohort one favor different languages in cohort one
            // JavaScript - 2
            // C# - 1

            var studentReport = from student in CohortOne.StudentList
                                group student by student.FavoriteLanguage into
                                // languageGroup is an IGrouping<string, Student>
                                languageGroup
                                select new Dictionary <string, int>()
            {
                { languageGroup.Key, languageGroup.Count() }
            };



            // Build a report for each cohort in the allCohorts List
            // Use the ReportItem class

            IEnumerable <ReportItem> cohortReport = from cohort in allCohorts
                                                    select new ReportItem()
            {
                CohortName            = cohort.CohortName,
                numberOfStudents      = cohort.StudentList.Count(),
                averageMonthsToHire   = cohort.StudentList.Select(s => s.monthsToHire).Average(),
                averageStartingSalary = cohort.StudentList.Select(s => s.startingSalary).Average()
            };


            Console.WriteLine();
        }