title: Group join causes IQueryable to turn into IEnumerable, why?
body: <p>I am accessing a remote data source and found that a group join causes an IQueryable query to be transformed into an IEnumerable, </p>
  
  <p>question: will this affect performance? I want to offload as much of the query to the database as possible, and not execute anything in memory...</p>
  
  <pre><code>var allusers = repo.All&lt;User&gt;().Where(x =&gt; x.IsActive);
  var _eprofile = repo.All&lt;Profile&gt;()
      .Where(x =&gt; x.IsProfileActive)
      .Join(allusers, x =&gt; x.UserID, y =&gt; y.UserID, (x, y) =&gt; new
      {
          eProfile = x,
          profile = y
      })
      .GroupJoin(_abilities, x =&gt; x.eProfile.ID, y =&gt; y.ID, (x, y) =&gt; new QuoteDTO
      {
          UserID = x.profile.Login,
          Email = x.profile.Email,
          Tel = x.profile.Tel,
          Mobile = x.eProfile.Mobile,
          CompanyID = x.profile.CompanyID,
          Ability = y.Select(c =&gt; new AbilityDTO
      {
          Name= c.Name
      })
  
      });
  </code></pre>
  
  <p>The line: 
  .GroupJoin(<strong>_abilities</strong>, x => x.eProfile.ID, y => y.ID, <strong>(x, y)</strong> => new QuoteDTO</p>
  
  <ol>
  <li>_abilities is an IQueryable, I get the ability of a user, a collection of objects</li>
  <li>the second part (x,y) - here y gets transformed into an IEnumerable...</li>
  </ol>
  
  <p><code>var cLists = List&lt;int&gt;();</code> //this collection is populated from the client code, lets say it 
  //contains 1,3,55 for arguments sake...</p>
  
  <pre><code> var _abilities= repo.All&lt;UserAbility&gt;()
        .Where(x =&gt; x.Status == Status.Active.ToString())
        .Where(x =&gt; cLists.Contains(x.CompetencyID));
  </code></pre>
  
  <p><strong>NOTE:</strong> the reason I use var is so that I can transform into an object of my liking, I was using a lot of anonymous types before the DTO objects were inserted...</p>