title: Select items from a List where the children contain the items from another List using LINQ
body: <p>I have the following classes:</p>
  
  <p>Product:</p>
  
  <pre><code>public class Product
  {
      public string Name { get; set; }
      public List&lt;Category&gt; Categories { get; set; }
  }
  </code></pre>
  
  <p>And Category:</p>
  
  <pre><code>public class Category
  {
      public string Id { get; set; }
      public string Name { get; set; }
  }
  </code></pre>
  
  <p>And I have the following method:</p>
  
  <pre><code>public List&lt;Product&gt; FilterProducts(List&lt;Category&gt; categories)
  {
      // filtering code here
  }
  </code></pre>
  
  <p>Question: How can I filter my products using a <code>List&lt;Categories&gt;</code> as parameter?</p>
  
  <p><strong>EDIT:</strong> One thing I forgot to mention is that if I have 2 categories I should be able to see only the products with the <em>category1</em> <strong>AND</strong> <em>category2</em>. What I've done so far has returned only products with category1 OR category2. Although inherit <em>IEquatable</em> use Intersect seems interesting I am comparing with the Id's for now.</p>