Как объединить не сколько коллекций в одну?

Приветствую всех! Сегодня хочу показать пример как с помощь LINQ, объединить коллекцию в одну. По условию задания у нас дана коллекция, главный метод и метод который мы должны дописать:

 

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:

public static string[] GetAllStudents(Classroom[] classes)
	{
			return classes.SelectMany(s => s.Students).ToArray();
	}

Для решения этой задачи воспользуемся методом SelectMany, почитать можете в чем разница между Select и SelectMany тут всю коллекцию преобразуем  в массив string() с помощью метода ToArray();

Обновлено: 19.01.2018 — 22:33

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

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

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