title: How to map an extra field from ExecuteQuery() in LINQ-TO-SQL but retain the LINQ entity
body: <p>Lets say I have a Position table and a related Team table
  I need to get a list of Position entities, plus the Team name from a related table, out of an ExecuteQuery() call.  As in:</p>
  
  <pre><code>var list = dc.ExecuteQuery&lt;T&gt;("SELECT Position.*, Team.Name  AS TeamName " +
  "FROM Position LEFT JOIN Team ON Position.TeamID=Team.TeamID");
  </code></pre>
  
  <p>(I need to use ExecuteQuery(), because the actual query is very complex.)  </p>
  
  <p>Yes, I could create a new flat class with all of the fields from the Position class plus the teamname field, <strong>but I need the result set to be actual LINQ entities</strong>, not just POCOs, because I will iterate over those records and update some fields.</p>
  
  <p><strong>First idea</strong>, Create a new class that contains the Position and the new field</p>
  
  <pre><code>public class PositionExtended
  {
     public Position position {get; set;}
     public string teamname {get; set;}
  }
  
  ExecuteQuery&lt;PositionExtended&gt;("SELECT Position.*, Team.Name  AS TeamName " +
  "FROM Position LEFT JOIN Team ON Position.TeamID=Team.TeamID");
  </code></pre>
  
  <p>This correctly maps the teamname, but not the position object.</p>
  
  <hr>
  
  <p><strong>Second Idea</strong>, inherit from the Position class:</p>
  
  <pre><code>public class PositionExtended : Position
  {
     public string teamname {get; set;}
  }
  
  ExecuteQuery&lt;PositionExtended&gt;("SELECT Position.*, Team.Name  AS TeamName " +
  "FROM Position LEFT JOIN Team ON Position.TeamID=Team.TeamID");
  </code></pre>
  
  <p>This returns an error "the field (first field of the Position class) is not part of the mapping for type PositionExtended.  Is the member above the root of an inheritance hierarchy?"</p>
  
  <hr>
  
  <p><strong>Last idea</strong>, Use a partial class:</p>
  
  <pre><code>public partial class Position
  {
     [Column(Name="TeamName")]
     public  string TeamName {get; set;}
  }
  
  ExecuteQuery&lt;Position&gt;("SELECT Position.*, Team.Name  AS TeamName " +
  "FROM Position LEFT JOIN Team ON Position.TeamID=Team.TeamID");
  </code></pre>
  
  <p>This actually works for this specific SQL query, but it changes the Position class, and all other LINQ calls returning Positions fail, because teamname field is not really part of the Position table, thus not returned in the query.</p>
  
  <p>Does anyone have a workaround for any of these ideas, or a better idea?</p>