Приветствую всех! Сегодня хочу показать пример как с помощь LINQ, объединить коллекцию в одну. По условию задания у нас дана коллекция, главный метод и метод который мы должны дописать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class Classroom { public List<string> Students = new List<string>(); } public static void Main() { Classroom[] classes = { new Classroom {Students = {"Pavel", "Ivan", "Petr"},}, new Classroom {Students = {"Anna", "Ilya", "Vladimir"},}, new Classroom {Students = {"Bulat", "Alex", "Galina"},} }; var allStudents = GetAllStudents(classes); Array.Sort(allStudents); Console.WriteLine(string.Join(" ", allStudents)); } public static string[] GetAllStudents(Classroom[] classes) { /// } |
Как видно в метод GetAllStudents принимает коллекцию коллекций. А вернуть нам нужно массив string[] Который содержит имена всех студентов.
Решение этой тривиальной задачи будет в одну строчку кода, которую мы решим с помощью Linq:
1 2 3 4 |
public static string[] GetAllStudents(Classroom[] classes) { return classes.SelectMany(s => s.Students).ToArray(); } |
Для решения этой задачи воспользуемся методом SelectMany, почитать можете в чем разница между Select и SelectMany тут всю коллекцию преобразуем в массив string() с помощью метода ToArray();