예제 #1
0
        static void Main(string[] args)
        {
            List <Patient> patients = new List <Patient>();

            Patient p1 = new Patient();

            p1.PatientName = "Deepak Joshi";
            p1.Area        = "UP";
            p1.Age         = 25;
            p1.Gender      = "Male";
            patients.Add(p1);


            Patient p2 = new Patient();

            p2.PatientName = "Bhavana Shrotri";
            p2.Area        = "Maharashtra";
            p2.Age         = 19;
            p2.Gender      = "Female";
            patients.Add(p2);


            Patient p3 = new Patient();

            p3.PatientName = "Arju Mulla";
            p3.Area        = "Maharashtra";
            p3.Age         = 21;
            p3.Gender      = "Female";
            patients.Add(p3);

            var mypatient = from pa in patients
                            where pa.Age > 20
                            orderby pa.PatientName, pa.Gender, pa.Age
            select pa;

            foreach (var pp in mypatient)
            {
                Console.WriteLine(pp.PatientName + " " + pp.Age + " " + pp.Gender);
            }

            int patientCount = (from pa in patients
                                where pa.Age > 20
                                orderby pa.PatientName, pa.Gender, pa.Age
                                select pa).Count();

            Console.WriteLine("Patient Count who's age above 20 is : " + patientCount);


            //Multiple select

            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };
            var   pairs    = from a in numbersA from b in numbersB where a < b select new { a, b };

            Console.WriteLine("Pairs where a < b:");
            foreach (var pair in pairs)
            {
                Console.WriteLine("{0} is less than {1}", pair.a, pair.b);
            }

            // OrderBy
            string[] words       = { "cherry", "apple", "blueberry" };
            var      sortedWords = from w in words orderby w select w;

            Console.WriteLine("The sorted list of words:");
            foreach (var w in sortedWords)
            {
                Console.WriteLine(w);
            }

            Console.ReadKey();
        }
예제 #2
0
        static void Main(string[] args)
        {
            int countUser = 10;                         // liczba użytkowników do wygenerowania
            var r         = Helper.Rand;                // odwołanie się do ref obiektu klasy Random utworzonego w klasie pomocniczej
            var names     = Helper.Names;               // odwołanie się do ref zmiennej tablicowej utworzonej w klasie pomocniczej

            List <IUser> userList = new List <IUser>(); // lista różnych użytkowników (lekarze i pacjenci nie przypisani do lekarza żadni)

            for (int i = 0; i < countUser; i++)
            {
                double nextHealthLevel = r.NextDouble(); // poziom zdrowia
                int    randomValue     = r.Next(0, 100);

                int    indName = r.Next(0, names.Length);              // losowy indeks
                string name    = names[indName];                       // losowe imie

                if (randomValue % 2 == 0)                              // sprawdzenie parzystości
                {
                    var newDoctor = new Doctor(name, nextHealthLevel); // stworzenie nowego lekarza (proszę przejść do ctor)
                    userList.Add(newDoctor);
                }
                else
                {
                    var newPatient = new Patient(name, nextHealthLevel); // stworzenie pacjenta nie związanego z żadnym lekarzem (proszę przejść do ctor)
                    userList.Add(newPatient);
                }
            }

            /**************************************** ZADANIE 1 ****************************************/

            // Wyswietlenie wszystkich osób z listy użytkowników
            Show("------------------- Lista osób -------------------", userList);

            // Posortuj listę użytkowników ze względu na ID użytkownika (rosnąco)
            //...
            var listauzytkownikowrozsnaca = userList.OrderBy(x => x.Id)
                                            .ToList();
            //Show("Posortowana lista użytkowników:", listauzytkownikowrozsnaca);

            // Pobierz imiona wszystkich użytkowników
            //...
            var listaimion = userList.Select(x => x.Name)
                             .ToList();
            //Show("Lista imion wszystkich użytkowników:",listaimion);

            // Pobierz liczbę użytkowników posiadających nieparzyste ID
            //...
            var nieparzysteid = userList.Count(x => x.Id % 2 == 1);
            //    .ToList();

            //Show("Liczba użytkowników posiadających nieparzyste ID:",nieparzysteid);

            // Pobierz użytkownika posiadającego ID = 5
            //...
            var id5 = userList.Where(x => x.Id == 5)
                      .ToList();
            //Show("Użytkownik posiadający ID=5:", id5);


            // Pobierz użytkownika posiadającego ID = 234
            //...
            var id234 = userList.Where(x => x.Id == 234)
                        .ToList();
            //Show("Użytkownik posiadający ID=234:", id234);

            // Usuń użytkowników posiadających stan zdrowia większe niż 0,4 (po zweryfikowaniu działania metody proszę o jej zakomentowanie)
            //...
            //var usun = userList.RemoveAll(x => x.HealthLevel > 0.4);


            // Pogrupuj listę użytkowników ze względu na typ użytkownika (lekarze/pacjenci)
            //...
            var grupuj = userList.GroupBy(x => x.GetType() == typeof(Doctor))
                         .ToList();

            Show("Lista użytkowników:", grupuj);


            // Pobierz maksymalną wartość stanu zdrowia z listy wszystkich użytkowników
            //...
            var maks = userList.Max(x => x.HealthLevel);

            //Show("Maksymalna wartość stanu zdrowia z listy wszystkich użytkowników", maks);


            // Oblicz sumę stanu zdrowia wszystkich użytkowników, których imiona zaczynają się na literę 'A'
            //...
            var sum = userList.Where(x => x.Name.StartsWith("A"))
                      .Sum(x => x.HealthLevel);

            // Pobierz 5 najwcześniej utworzonych użytkowników (Date)
            //...
            var utworzeninajwczesniej = userList.OrderBy(x => x.Date)
                                        .Take(5)
                                        .ToList();
            //Show(" 5 najwcześniej utworzonych użytkowników: ", utworzeninajwczesniej);
            /**************************************** ZADANIE 2 ****************************************/

            // Pobierz pierwszego pacjenta z listy użytkowników  (GetType(), typeof, is)
            //...

            var pierwszypacjent = userList.Where(x => x.GetType() == typeof(Patient))
                                  .First();
            //Show("Pierwszy pacjent z listy użytkowników: ", pierwszypacjent);

            // Pobierz tylko lekarzy z listy użytkowników
            //...
            var lekarze = userList.Where(x => x.GetType() == typeof(Doctor))
                          .ToList();
            //Show("Lekarze: ", lekarze);

            // Pobierz tylko lekarzy posiadających parzyste ID
            //...
            var lekarzeparzysteid = userList.Where(x => x.Id % 2 == 0)
                                    .Where(x => x.GetType() == typeof(Doctor));

            Show("lekarze posiadające parzyste ID: ", lekarzeparzysteid);

            // Oblicz średnią wartość stanu zdrowia lekarzy
            //...
            var srednialekarze = userList
                                 .Where(x => x.GetType() == typeof(Doctor))
                                 .Average(x => x.HealthLevel);

            //Show("Średnia wartość stanu zdrowia lekarzy: ", srednialekarze);
            // Podziel listę użytkowników na 5 elementowe równoliczne grupy (grupy mieszane)
            //...
            int a      = 5;
            var group1 = userList.Take(a);
            var group2 = userList.Skip(group1.Count())
                         .Take(a);

            // Pobierz 5 użytkowników z listy użytkowników, zaczynając od użytkownika z ID = 2
            //...
            var odid2 = userList.FindIndex(x => x.Id == 2);

            /**************************************** ZADANIE 3 ****************************************/

            // Zlokalizuj lekarza posiadającego największą liczbę pacjentów (doctor.PacientCount)
            //...
            var najwiekszaliczbapacjentow = userList.Where(x => x.GetType() == typeof(Doctor))
                                            .Select(x => (Doctor)x)
                                            .OrderBy(x => x.PacientCount)
                                            .First();
            //Show("Lekarz posiadający największą liczbę pacjentów: ", najwiekszaliczbapacjentow);

            // Pobierz wszystkich pacjentów przypisanych do lekarzy (doctor.PacientList)
            //...
            var pacjenciprzypisanidolekarzy = userList.Where(x => x.GetType() == typeof(Doctor))
                                              .Select(x => (Doctor)x)
                                              .Select(x => x.PacientList);
            //Show("Wszyscy pacjenci przypisani do lekarzy", pacjenciprzypisanidolekarzy);
            // Pobierz wszystkich użytkowników(lekarzy, pacjentów przypisanych i nieprzypisanych) posiadających imię rozpoczynające się na litere 'P'
            //...
            var wszyscy = userList.Select(x => x.Name.StartsWith("P"))
                          .ToList();

            //Show("Wszyscy użtkownicy posiadający imię rozpoczynające się na litere P", wszyscy);

            Console.ReadKey();
        }