title: LINQ filter list in list by a specific term
body: <p>I know it has been discussed a lot, but, being a beginner in LINQ I don't manage to filter this situation:</p>
  
  <p>I have a list of <code>Customers</code> containing a list of <code>Projects</code></p>
  
  <p>list to filter:</p>
  
  <pre><code>List&lt;Customer&gt; Customers {get; set;}
  </code></pre>
  
  <p>this is Customer class:</p>
  
  <pre><code>class Customer
  {
      public string Name {get; set;}
      public List&lt;Project&gt; Projects {get; set;}
  }
  </code></pre>
  
  <p>this is Project class:</p>
  
  <pre><code>class Project
  {
      public string Name {get; set;}
  }
  </code></pre>
  
  <p>All I want is to find all customers containing <strong>ONLY</strong> the projects that have a certain name (my app will filter by the project's name).</p>
  
  <p>As for now I have this: </p>
  
  <pre><code>Customers
      .Where(c =&gt; c.Projects.Any(p =&gt; p.Name.ToLowerInvariant().Contains(lowerCaseFilter)));
  </code></pre>
  
  <p>but it doesn't help, because it will return all the customers containing <strong>ALL</strong> the projects not only the one I have searched.</p>
  
  <p>For example, if I have a list of 15 customers with an unknown number of projects in each of them, I want to display only those customers and <strong>only</strong> those projects in every customers that meet the searched term.</p>
  
  <p>I think I am missing something here...</p>