static void Main()
        {
            Animal jaba = new Frog("baba jaba", 1, Genders.Female);
            Animal kekerica = new Frog("kekerica", 3, Genders.Female);

            Animal sharo = new Dog("sharo", 3, Genders.Male);
            Animal sara = new Dog("sara", 2, Genders.Female);
            Animal oldy = new Dog("oldy", 12, Genders.Male);

            Animal puhi = new Kitten("puhi", 2);
            Animal tommy = new Tomcat("tommy", 4);
            Animal mouseKiller = new Cat("mousy", 5, Genders.Male);

            List<Animal> animals = new List<Animal>()
            {
                jaba,
                kekerica,
                sharo,
                sara,
                puhi,
                tommy,
                mouseKiller,
                oldy
            };
            var groupedAnimals = from animal in animals
                                 group animal by (animal is Cat) ? typeof(Cat) : animal.GetType() into g
                                 select new { GroupName = g.Key, AverageAge = g.ToList().Average(an => an.Age) };

            foreach (var animal in groupedAnimals)
            {
                Console.WriteLine("{0} - average age: {1:N2}", animal.GroupName.Name, animal.AverageAge);
            }

            puhi.ProduceSound();
            oldy.ProduceSound();
            jaba.ProduceSound();
        }
示例#2
0
        static void Main(string[] args)
        {
            Dog dog = new Dog("Sharo", 6, Gender.Male);

            Console.WriteLine(dog.ToString());

            Kitten kit = new Kitten("Pise", 1);

            Console.WriteLine(kit.ToString());
            Console.WriteLine();

            Animal[] animals = new Animal[]
            {
                new Dog("Bendji", 3, Gender.Male),
                new Tomcat("Tom", 8),
                new Frog("Jaburana", 2, Gender.Female),
                new Dog("Ulichna Prevazhodna", 7, Gender.Female),
                new Dog("Lassy", 12, Gender.Female),
                new Kitten("Pisence", 1),
                new Kitten("Malko kote", 2),
                new Tomcat("Kotak", 7)
            };

            var animalAgeAverage = from animal in animals
                                   group animal by new { GroupName = animal.GetType().Name } into gr
                select new
            {
                GroupName  = gr.Key.GroupName,
                AverageAge = gr.Average(animal => animal.Age)
            };

            foreach (var animal in animalAgeAverage)
            {
                Console.WriteLine(String.Format("Group: {0}; Age Average: {1:0.00}", animal.GroupName, animal.AverageAge));
            }
        }