Продолжаем упражняться в написании LINQ expressions. Вам сверху снизошёл всё тот же массив stars с объектами типа RockStar:
1 2 3 4 5 6 7 |
internal sealed class RockStar { internal string Name { get; set; } internal string CurrentBand { get; set; } internal string Role { get; set; } internal long SalaryPerGig { get; set; } } |
Напишите LINQ выражение, которое группирует объекты из массива по полю CurrentBand и возвращает последовательность новых объектов с двумя полями: Name (общее значение свойства CurrentBand для объектов группы) и Size (сколько человек оказалось в группе).
У вас, конечно, получится написать код исключительно на extension-методах, но постарайтесь всё-таки использовать конструкцию from … in stars … select …
Подсказки:
- За группировку в LINQ отвечает конструкция group by.
- Содержимое массива stars:
1 2 3 4 5 6 7 8 9 10 |
var stars = new[] { new RockStar { Name = "Ian Gillan", CurrentBand = "Deep Purple", SalaryPerGig = 700, Role = "Vocal" }, new RockStar { Name = "Angus Young", CurrentBand = "AC/DC", SalaryPerGig = 900, Role = "Guitar" }, new RockStar { Name = "Roger Glover", CurrentBand = "Deep Purple", SalaryPerGig = 400, Role = "Bass" }, new RockStar { Name = "David Coverdale", CurrentBand = "Whitesnake", SalaryPerGig = 950, Role = "Vocal" }, new RockStar { Name = "Rick Allen", CurrentBand = "Def Leppard", SalaryPerGig = 800, Role = "Drums" }, new RockStar { Name = "Steven Morse", CurrentBand = "Deep Purple", SalaryPerGig = 600, Role = "Guitar" }, new RockStar { Name = "Don Airey", CurrentBand = "Deep Purple", SalaryPerGig = 600, Role = "Keyboards" }, }; |
P. S. Все персонажи являются вымышленными и любое совпадение с реально живущими или когда-либо жившими людьми и их зарплатами случайно.
Sample Input:
Sample Output:
1 |
AC/DC: 1, Deep Purple: 4, Def Leppard: 1, Whitesnake: 1 |
Напишите программу. Тестируется через stdin → stdout
Стоимость решения этой задачи всего 50 рублей, купи решения у меня или весь курс за 500р+экзамен