title: Improve linq query speed using join
body: <p>I'm not used with linq. I use EF 4.0. I'm always using lambda expression to get my data like this:</p>
  
  <pre><code>List&lt;User&gt; users = db.Users
                          .Include(u =&gt; u.Licences)
                          .Include(u =&gt; u.Licences.Select(l =&gt; l.LicenceProducts.Select(lp =&gt; lp.Product)))
                          .Include(u =&gt; u.UserAddress)
                          .Include(u =&gt; u.Contact)
                          .Include(u =&gt; u.User2)
                          .Include(u =&gt; u.SupportProducts)
                          .Where(u =&gt; u.Type != (int)UserType.Admin)
                          .OrderBy(u =&gt; u.Name)
                          .ToList();
  </code></pre>
  
  <p>Unfortunately, it takes a lot of time to execute. So, I want to change it by using left joins but I'm not understanding correctly the way joins are working in Linq.</p>
  
  <p>Here's what I tried:</p>
  
  <pre><code>users = from user in db.Users
          join licence in db.Licences on user.UserID equals licence.UserID
          join licenceProduct in db.LicenceProducts on licence.LicenceID equals licenceProduct.LicenceID...;
  </code></pre>
  
  <p>The type that it returns, is not the same as it was previously (List)</p>
  
  <p>I also tried this but I have the same problem</p>
  
  <pre><code>users = db.Users
      .Join(db.Licences, lic =&gt; lic.UserID, user =&gt; user.UserID, (user, lic) =&gt; new { user, lic })
  </code></pre>