title: Does Dapper construct a new object for duplicated join results?
body: <p>When Dapper does a <code>JOIN</code> does it call the constructor for each <code>a</code>, <code>b</code>, <code>c</code>? or each unique <code>a</code>,<code>b</code>, <code>c</code>?</p>
  
  <pre><code>string sql = @"SELECT a.*, b.*, c.* 
                 FROM A a
                 JOIN B b ON b.Id = a.BId
                 JOIN C c ON b.Id = c.BId";
  
  var results = db.Query&lt;A, B, C, A&gt;(sql, (a, b, c) =&gt; { return a; });
  </code></pre>
  
  <p>For instance, if I have duplicates of <code>c</code>, will Dapper call <code>c</code>'s constructor many times?</p>
  
  <p>Or will it notice the Ids are the same between the rows and pass me the same object for all instances where the id is the same?</p>
  
  <p><strong>Edit:</strong></p>
  
  <p>After some testing, it looks like it does call the constructor multiple times for duplicate values.</p>
  
  <p>Is there a simple way to work around this using the Dapper API?</p>