Выберите различные значения во всех вложенных коллекциях, используя LINQ для объектов?

Учитывая следующую настройку кода:

public class Foo {
 List<string> MyStrings { get; set; }
}

List<Foo> foos = GetListOfFoosFromSomewhere();

Как мне получить список всех отдельных строк в MyStrings во всех экземплярах Foo с помощью LINQ? Я чувствую, что это должно быть легко, но не может понять это.

string[] distinctMyStrings = ?

Ответ 1

 // If you dont want to use a sub query, I would suggest:

        var result = (
            from f in foos
            from s in f.MyStrings
            select s).Distinct();

        // Which is absoulutely equivalent to:

        var theSameThing = foos.SelectMany(i => i.MyStrings).Distinct();

        // pick the one you think is more readable.

Я также настоятельно рекомендую прочитать MSDN в методах расширения Enumerable. Это очень информативно и имеет отличные примеры!