Получить отдельный список строк из списка строк списка с помощью Linq

Моя коллекция списков, как показано ниже

List<Class> classes = new List<Class>()
{
    new Class() 
    { 
        className = "A",
        students = new List<Student>()
        { 
            new Student{ name="SA"}, 
            new Student{ name="SB"},
            new Student{ name="SC"},
        }
    },
    new Class()
    {
        className = "B",
        students = new List<Student>()
        { 
            new Student{ name="SD"}, 
            new Student{ name="SA"},
            new Student{ name="SA"},
        }                   
    }
}

Мне нужно уникальное имя учащегося из классов с использованием Linq в формате List<string>. Я попытался получить одиночный запрос linq, но получил как., List<List<string>>. Мне нужно List<string>.


person Nizam Deen    schedule 12.03.2012    source источник


Ответы (1)


Это должно быть что-то вроде:

var students = classes.SelectMany(p => p.Students).Select(p => p.Name).Distinct();

SelectMany объединяет List<Student>, второй Select выбирает только имя учащегося.

person xanatos    schedule 12.03.2012