Решение курса stepik.org Программирование на C#

Продолжаем упражняться в написании LINQ expressions. Вам сверху снизошёл всё тот же массив stars с объектами типа RockStar:

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:
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:

AC/DC: 1, Deep Purple: 4, Def Leppard: 1, Whitesnake: 1

Напишите программу. Тестируется через stdin → stdout

Стоимость решения этой задачи всего 50 рублей, купи решения у меня или весь курс за 500р+экзамен

Обновлено: 24.03.2021 — 11:27

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.