title: How to flatten nested objects with linq expression
body: <p>I am trying to flatten nested objects like this:</p>
  
  <pre><code>public class Book
  {
      public string Name { get; set; }
      public IList&lt;Chapter&gt; Chapters { get; set; }
  }
  
  public class Chapter
  {
      public string Name { get; set; }
      public IList&lt;Page&gt; Pages { get; set; }
  }
  
  
  public class Page
  {
      public string Name { get; set; }
  }
  </code></pre>
  
  <p>Let me make an example. This is the data I have</p>
  
  <pre><code>Book: Pro Linq 
  { 
     Chapter 1: Hello Linq 
     {
        Page 1, 
        Page 2, 
        Page 3
     },
     Chapter 2: C# Language enhancements
     {
        Page 4
     },
  }
  </code></pre>
  
  <p>The result I am looking for is the following flat list:</p>
  
  <pre><code>"Pro Linq", "Hello Linq", "Page 1"
  "Pro Linq", "Hello Linq", "Page 2"
  "Pro Linq", "Hello Linq", "Page 3"
  "Pro Linq", "C# Language enhancements", "Page 4"
  </code></pre>
  
  <p>How could I accomplish this? I could do it with a <em>select new</em> but I've been told that a SelectMany would be enough.</p>