title: Fluent NHibernate filter child collection with Linq
body: <p>I am trying to retrieve a root aggregate and its children, applying a date filter on child collection.</p>
  
  <pre><code>CREATE TABLE Shop
  (
      Id int
  )
  
  CREATE TABLE Order
  (
      ShopId int,
      OrderDate datetime
  )
  </code></pre>
  
  <p>Naturally, child object doesn't have a ShopId property to avoid bi-directional reference:</p>
  
  <pre><code>class Shop
  {
      int Id { get; set; }
      List&lt;Order&gt; { get; set; }
  }
  
  class Order
  {
      DateTime OrderDate { get; set; }
  }
  </code></pre>
  
  <p>And FNHB mappings looks like this:</p>
  
  <pre><code>public ShopMap()
  {
      this.Table("SHOP");
      this.Id(x =&gt; x.Id).Column("ID");
      this.HasMany(x =&gt; x.Orders).Table("ORDER").KeyColumn("SHOP_ID");
  }
  
  public OrderMap()
  {
      this.Table("ORDER");
      this.Map(x =&gt; x.OrderDate);
  }
  </code></pre>
  
  <p><strong>I'm trying to retrieve a given Shop with its Orders placed between certain dates</strong>, given parameters <code>shopId, fromDate, toDate</code>, I've tried this but it throws exception:</p>
  
  <pre><code>Session.Query&lt;Shop&gt;().Where(shop =&gt; shop.Id == shopId)
  .FetchMany(
      shop =&gt; shop.Orders.Where(
          order =&gt; order .OrderDate &gt;= fromDate &amp;&amp; order.OrderDate &lt;= toDate));
  </code></pre>
  
  <p>Can this be achieved without a use of Magic Strings (NHb criteria, HQL etc.), preferebly with a simple Linq query?</p>