Beispiel #1
0
        static void Main(string[] args)
        {
            Random Gen = new Random();

            // Vygeneruj 2 sady náhodných dat
            List <int> SadaA = GenerujData(Gen, 20);
            List <int> SadaB = GenerujData(Gen, 35);

            int random = Gen.Next(50);

            Console.WriteLine("Vybírám součty těch čísel z obou sad, která jsou menší než {0}", random);

            var MensiNez = from a in SadaA
                           from b in SadaB
                           where (a + b) < random
                           select a + b;

            foreach (int soucet in MensiNez)
            {
                Console.WriteLine("{0}", soucet);
            }

            // LinQ odkládá vyhodnocení výrazu až tehdy když je skutečně potřeba:

            for (int i = 0; i < 30; i++) // Změníme náhodně data
            {
                if (Gen.Next() % 3 == 0)
                {
                    continue;
                }

                if (Gen.Next() % 2 == 0)
                {
                    SadaA[Gen.Next(0, SadaA.Count - 1)] = Gen.Next(0, 100);
                }
                else
                {
                    SadaB[Gen.Next(0, SadaB.Count - 1)] = Gen.Next(0, 100);
                }
            }

            Console.WriteLine("Znovu s jinými čísly ale stejným query:");
            // Součty tady budou jiné, přestože používáme stejné query "MensiNez"
            foreach (int soucet in MensiNez)
            {
                Console.WriteLine("{0}", soucet);
            }

            Console.WriteLine("Vybírám stejná čísla v obou sadách");

            var ShodnaCisla = from a in SadaA
                              from b in SadaB
                              where a == b
                              select a;

            // Vypiš všechny shodné páry čísel a přeskoč první pár
            foreach (var shodnyPar in ShodnaCisla.Skip(1))
            {
                Console.WriteLine("{0}", shodnyPar);
            }

            // Vytvoříme si nějaké kategorie a auto které do těchto kategorií spadají
            KategorieAuta[] Kategorie = new KategorieAuta[5];
            Kategorie[0] = new KategorieAuta("Sedan", 3, 1);
            Kategorie[1] = new KategorieAuta("Sedan", 5, 2);
            Kategorie[2] = new KategorieAuta("Combi", 5, 3);
            Kategorie[3] = new KategorieAuta("SUV", 5, 4);
            Kategorie[4] = new KategorieAuta("Zemědělský stroj", 1, 5);

            // V garáži mám:
            Auto[] Auta = new Auto[11];
            Auta[0]  = new Auto("Volkswagen", "modrá", 3);
            Auta[1]  = new Auto("Audi", "bílá", 1);
            Auta[2]  = new Auto("Audi", "modrá", 2);
            Auta[3]  = new Auto("Volkswagen", "černá", 4);
            Auta[4]  = new Auto("BMW", "černá", 1);
            Auta[5]  = new Auto("BMW", "bílá", 2);
            Auta[6]  = new Auto("Porsche", "stříbrná", 4);
            Auta[7]  = new Auto("Volkswagen", "stříbrná", 4);
            Auta[8]  = new Auto("Zetor", "červená", 5);
            Auta[9]  = new Auto("Ferrari", "červená", 1);
            Auta[10] = new Auto("Škoda", "modrá", 3);

            // Vyber všechna červená vozidla
            var ervené = from auto in Auta
                         join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                         where auto.Barva == "červená"
                         select new { auto.Značka, kat.Karoserie };

            Console.WriteLine("Všechna červená vozidla:");
            foreach (var vozidlo in  ervené)
            {
                Console.WriteLine("{0} {1}", vozidlo.Značka, vozidlo.Karoserie);
            }


            // Vyber značku, barvu a počet dveří všech dostupných sedanů a seřaď abecedně vzestupně podle značky
            var Sedany = from auto in Auta
                         join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                         where kat.Karoserie == "Sedan"
                         orderby auto.Značka ascending
                         select new { auto.Značka, auto.Barva, kat.PočetDveří };

            Console.WriteLine("Všechny dostupné sedany:");
            foreach (var sedan in Sedany)
            {
                Console.WriteLine("{0} {1} {2}", sedan.Značka, sedan.Barva, sedan.PočetDveří);
            }


            int CelkemDveříVGaráži = (from auto in Auta
                                      join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                                      select kat.PočetDveří).Sum();

            // Toto už není odložené query, neboť jsem vynutil spočtení výsledku, takže kdybych později přišel o dveře tak se číslo už dál nezmění.

            Console.WriteLine("Všechna moje auta mají celekem {0} dveří", CelkemDveříVGaráži);

            Console.Read();
        }
        static void Main(string[] args)
        {
            Random Gen = new Random();

            // Vygeneruj 2 sady náhodných dat
            List<int> SadaA = GenerujData(Gen,20);
            List<int> SadaB = GenerujData(Gen,35);

            int random = Gen.Next(50);

            Console.WriteLine("Vybírám součty těch čísel z obou sad, která jsou menší než {0}", random);

            var MensiNez = from a in SadaA
                           from b in SadaB
                           where (a + b) < random
                           select a + b;

            foreach (int soucet in MensiNez)
            {
                Console.WriteLine("{0}", soucet);
            }

            // LinQ odkládá vyhodnocení výrazu až tehdy když je skutečně potřeba:

            for (int i = 0; i < 30; i++) // Změníme náhodně data
            {
                if (Gen.Next() % 3 == 0) continue;

                if (Gen.Next() % 2 == 0)
                    SadaA[Gen.Next(0, SadaA.Count - 1)] = Gen.Next(0,100);
                else SadaB[Gen.Next(0, SadaB.Count - 1)] = Gen.Next(0,100);
            }

            Console.WriteLine("Znovu s jinými čísly ale stejným query:");
            // Součty tady budou jiné, přestože používáme stejné query "MensiNez"
            foreach (int soucet in MensiNez)
            {
                Console.WriteLine("{0}", soucet);
            }

            Console.WriteLine("Vybírám stejná čísla v obou sadách");

            var ShodnaCisla = from a in SadaA
                              from b in SadaB
                              where a == b
                              select a;

            // Vypiš všechny shodné páry čísel a přeskoč první pár
            foreach (var shodnyPar in ShodnaCisla.Skip(1))
            {
                Console.WriteLine("{0}", shodnyPar);
            }

            // Vytvoříme si nějaké kategorie a auto které do těchto kategorií spadají
            KategorieAuta[] Kategorie = new KategorieAuta[5];
            Kategorie[0] = new KategorieAuta("Sedan", 3, 1);
            Kategorie[1] = new KategorieAuta("Sedan", 5, 2);
            Kategorie[2] = new KategorieAuta("Combi", 5, 3);
            Kategorie[3] = new KategorieAuta("SUV", 5, 4);
            Kategorie[4] = new KategorieAuta("Zemědělský stroj", 1, 5);

            // V garáži mám:
            Auto[] Auta = new Auto[11];
            Auta[0] = new Auto("Volkswagen", "modrá", 3);
            Auta[1] = new Auto("Audi", "bílá", 1);
            Auta[2] = new Auto("Audi", "modrá", 2);
            Auta[3] = new Auto("Volkswagen", "černá", 4);
            Auta[4] = new Auto("BMW", "černá", 1);
            Auta[5] = new Auto("BMW", "bílá", 2);
            Auta[6] = new Auto("Porsche", "stříbrná", 4);
            Auta[7] = new Auto("Volkswagen", "stříbrná", 4);
            Auta[8] = new Auto("Zetor", "červená", 5);
            Auta[9] = new Auto("Ferrari", "červená", 1);
            Auta[10] = new Auto("Škoda", "modrá", 3);

            // Vyber všechna červená vozidla
            var Červené = from auto in Auta
                          join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                          where auto.Barva == "červená"
                          select new { auto.Značka, kat.Karoserie };

            Console.WriteLine("Všechna červená vozidla:");
            foreach (var vozidlo in Červené)
            {
                Console.WriteLine("{0} {1}", vozidlo.Značka, vozidlo.Karoserie);
            }

            // Vyber značku, barvu a počet dveří všech dostupných sedanů a seřaď abecedně vzestupně podle značky
            var Sedany = from auto in Auta
                         join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                         where kat.Karoserie == "Sedan"
                         orderby auto.Značka ascending
                         select new { auto.Značka, auto.Barva, kat.PočetDveří };

            Console.WriteLine("Všechny dostupné sedany:");
            foreach (var sedan in Sedany)
            {
                Console.WriteLine("{0} {1} {2}", sedan.Značka, sedan.Barva, sedan.PočetDveří);
            }

            int CelkemDveříVGaráži = (from auto in Auta
                                      join kat in Kategorie on auto.ID_Kategorie equals kat.ID
                                      select kat.PočetDveří).Sum();
            // Toto už není odložené query, neboť jsem vynutil spočtení výsledku, takže kdybych později přišel o dveře tak se číslo už dál nezmění.

            Console.WriteLine("Všechna moje auta mají celekem {0} dveří", CelkemDveříVGaráži);

            Console.Read();
        }