Having spent several years working with complex unrelated hierarchies
like this, I can tell you it is far easier to manage each of these object
types
as entirely separate generic List<T>. Then, writing Find predicate queries
against
each list that deal with all sorts of different scenarios is much, much
easier to support
as your app becomes more and more complex.
I realize the methodology you've used is considered "standard". That said,
the way people did things years ago doesn't necessarily mean it is the best
fit for "your" app.

Signature
Robbe Morris [Microsoft MVP - Visual C#]
AdvancedXL Server, Designer, and Data Analyzer
Convert cell ranges in Excel to rule driven web apps
without IT programmers.
Free download: http://www.equalssolved.com/default.aspx
> Given the following classes:
>
[quoted text clipped - 85 lines]
>
> How do I solve the above using Lamda?