Entity Framework select on IQueryable throwing "must be reducible node"
<p>I have this query where predicate is <code>Expression&lt;Func&lt;Property, bool&gt;&gt;</code> and the whole query returns an <code>IQueryable</code>:</p>

<pre><code>var query = _db.PropertyRepository.Get(predicate)
               .Include(x =&gt; x.Info)
               .ThenInclude(x =&gt; x.Address)
               .Include(x =&gt; x.TransactionListingAgents)
               .ThenInclude(x =&gt; x.Agent)
               .ThenInclude(x =&gt; x.Person)
               .ThenInclude(x =&gt; x.Contact)
</code></pre>

<p>I'd like to perform a select on that <code>IQueryable</code> to project to a DTO, because I need to do some data manipulation with that data. So I have this other query </p>

<pre><code>query.Select(x =&gt; new BasePropertyDTO() {
    Id = x.Id,
    StreetNumber = x.Info.Address.StreetNumber,
    Street = x.Info.Address.StreetName,
});
</code></pre>

<p>However, it throws an exception </p>

<blockquote>
  <p>must be reducible node</p>
</blockquote>

<p>My workaround was doing <code>ToList()</code> before the <code>Select()</code> and that doesn't throw the exception anymore , but now I'm grabbing data that I don't need. </p>

<p>I have found out that the issue comes when I try to project on my select properties from Info navigation property or any navigation property, even though I have the <code>Include()</code> calls.</p>

<p>Any ideas on why this is behaving this way or what's wrong with my queries?</p>

<p>Complete query after upgrading to 1.1.0:</p>

<pre><code>query.ToList().Select(x =&gt; new BasePropertyDTO() {
                Id = x.Id,
                StreetNumber = (x.Info != null &amp;&amp; x.Info.Address != null) ? x.Info.Address.StreetNumber : "",
                Street = (x.Info != null &amp;&amp; x.Info.Address != null) ? x.Info.Address.StreetName : "",
                City = (x.Info != null &amp;&amp; x.Info.Address != null) ? x.Info.Address.City : "",
                AgentName = x.TransactionListingAgents.Where(t =&gt; t.Agent != null &amp;&amp; t.Agent.Person != null &amp;&amp; t.Agent.Person.Contact != null &amp;&amp; t.ListingId == x.Id &amp;&amp; t.BrokerageId == x.BrokerageId).Select(a =&gt; a.Agent.Person.Contact.FullName).FirstOrDefault()
            });
</code></pre>

<p>The AgentName part throws </p>

<blockquote>
  <p>An item with the same key has already been added</p>
</blockquote>

<p>If I remove that, I still get the </p>

<blockquote>
  <p>must be reducible node</p>
</blockquote>