title: Create predicate with nested classes with Expression
body: <p>I have this :</p>
  
  <pre><code>public class Company
  {
      public int Id { get; set; }
      public string Name { get; set; }
  }
  public class City
  {
      public int Id { get; set; }
      public string Name { get; set; }
      public int ZipCode { get; set; }
  }
  public class Person
  {
      public int Id { get; set; }
      public string FirstName { get; set; }
      public string LastName { get; set; }
      public int? Age { get; set; }
      public City City { get; set; }
      public Company Company { get; set; }
  }
  </code></pre>
  
  <p>I'd like a some case generate the predicate like this :</p>
  
  <pre><code>var result = listPerson.Where(x =&gt; x.Age == 10).ToList&lt;&gt;();
  </code></pre>
  
  <p>Or this :</p>
  
  <pre><code>var result  = listPerson.Where( x =&gt; x.Company.Name == 1234).ToList();
  </code></pre>
  
  <p>Or this :</p>
  
  <pre><code>var result  = listPerson.Where( x =&gt; x.City.ZipCode == "MyZipCode").ToList();
  </code></pre>
  
  <p>Or this :</p>
  
  <pre><code>var result  = listPerson.Where( x =&gt; x.Company.Name == "MyCompanyName").ToList();
  </code></pre>
  
  <p>Then I created a "PredicateBuilder", that's work (I get the type, if nullable or not and I build the predicate) when I do this :</p>
  
  <pre><code>BuildPredicate&lt;Person&gt;("Age", 10); I get this : x =&gt; x.Age == 10
  </code></pre>
  
  <p>But I don't how manage when there is an nested property like this :</p>
  
  <pre><code>BuildPredicate&lt;Person&gt;("City.ZipCode", "MyZipCode"); 
  I'd like get this : x =&gt; x.City.ZipCode == "MyZipCode"
  </code></pre>
  
  <p>Or this :</p>
  
  <pre><code>BuildPredicate&lt;Person&gt;("City.Name", "MyName"); 
  I'd like get this : x =&gt; x.City.Name == "MyName"
  </code></pre>
  
  <p>Or this :</p>
  
  <pre><code>BuildPredicate&lt;Person&gt;("Company.Name", "MyCompanyName"); 
  I'd like get this : x =&gt; x.Company.Name == "MyCompanyName"
  </code></pre>