title: How to join 2 tables using linq but avoid anonymous object
body: <p>I want to join 2 tables using linq and avoid anonymous object. </p>
  
  <p>So far i use tuple.</p>
  
  <pre><code>var products = from tm in db.TargetMarkets
                  join tp in db.Products on tm.product_id equals tp.id
                  where tm.country == 2
                  select Tuple.Create&lt;TargetMarket, Product&gt;(tm, tp);
  </code></pre>
  
  <p>But, when i foreach </p>
  
  <pre><code>foreach (var p in products)
  {
      var a = p.Item1.id;
  }
  </code></pre>
  
  <p>It throws an exception</p>
  
  <blockquote>
    <p>LINQ to Entities does not recognize the method 'System.Tuple`2</p>
  </blockquote>
  
  <p><strong>Question</strong>:</p>
  
  <ol>
  <li>Is there a way to keep my code strongly typed</li>
  <li>What's wrong with tuple (optional)</li>
  </ol>