Я могу сгладить результаты дочерней коллекции внутри коллекции с помощью SelectMany:
// a list of Foos, a Foo contains a List of Bars
var source = new List<Foo>() { ... };
var q = source.SelectMany(foo => foo.Bar)
.Select(bar => bar.barId)
.ToList();
это дает мне список всех идентификаторов баров в списке Foo. Когда я пытаюсь пройти три уровня в глубину, возвращается неверный результат.
var q = source.SelectMany(foo => foo.Bar)
.SelectMany(bar => bar.Widget)
.Select(widget => widget.WidgetId)
.ToList();
Как мне использовать SelectMany, чтобы получить список всех виджетов во всех барах в моем списке Foos?
Изменить Я неправильно выразился в приведенном выше предложении, но код отражает цель. Я ищу список всех идентификаторов виджетов, а не виджетов.
"Неправильный" результат - возвращаются не все идентификаторы виджетов.