Используя 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? Я думаю о вложенном запросе, но не могу понять. Любая помощь очень ценится.
Ответы
Ответ 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();