I can flatten the results of a child collection within a collection with SelectMany:
// a list of Foos, a Foo contains a List of Bars var source = new List<
var q = ( from f in foo from b in f.Bars from w in b.Widgets select w.WidgetId ).ToList();
Also note that if you want the unique list, you can do .Distinct().ToList() instead.