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(); }
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)); } }