Подтвердить что ты не робот

Используя LINQ, выберите список объектов внутри другого списка объектов

public class ClassA
{
     public string MyString {get; set;}
}

public class ClassB
{
     public List<ClassA> MyObjects {get; set;}
}

List<ClassB> classBList = new List<ClassB>();
var results = (from i in classBList select i.MyObjects).ToDistinct();

Мне нужен отдельный список всех объектов ClassA в classBList. Как мне это сделать с помощью linq? Я думаю о вложенном запросе, но не могу понять. Любая помощь очень ценится.

4b9b3361

Ответ 1

Вы пытаетесь выбрать несколько объектов результата для каждого объекта ClassB в исходном списке.

Следовательно, вы ищете SelectMany метод расширения:

var results = classBList.SelectMany(b => b.MyObjects).Distinct();

Если вы хотите использовать выражения запроса, вам нужно использовать два предложения from:

var results = (from b in classBList from a in b.MyObjects select a).Distinct();

Ответ 2

Вы хотите использовать IEnumerable.SelectMany() Метод расширения для выравнивания иерархии:

var result = classBList.SelectMany(b => b.MyObjects).Distinct();