Я могу сгладить результаты дочерней коллекции в коллекции с помощью 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();
это дает мне список всех идентификаторов Bar в списке Foo. Когда я пытаюсь пройти три уровня, возвращается неправильный результат.
var q = source.SelectMany(foo => foo.Bar)
.SelectMany(bar => bar.Widget)
.Select(widget => widget.WidgetId)
.ToList();
Как я должен использовать SelectMany, чтобы получить список всех виджетов на всех барах в моем списке Foos?
Edit Я пропустил вышеупомянутое предложение, но код отражает цель. Я ищу список всех идентификаторов виджетов, а не виджеты.
"Неверный" результат - это не все идентификаторы виджетов.