title: Value Tuples Vs Anonymous Types Performance
body: <p>I'm surprised there isn't a question on this already.  C# 7 added value tuples.
  I'm trying to figure out when I should adopt these features.</p>
  
  <p>Take this dictionary for example uses Anonymous Type:</p>
  
  <pre><code>var changesTypeMapByEntityState = this.ChangeTracker.Entries()
         .Where(x =&gt; (int)x.State &gt; (int)EntityState.Unchanged)
         .GroupBy(x =&gt; new { Type = x.Entity.GetType(), x.State })
         .ToDictionary(x =&gt; x.Key, x =&gt; x.ToList());
  </code></pre>
  
  <p>Vs this Dictionary which uses Value Tuples</p>
  
  <pre><code>var changesTypeMapByEntityState = this.ChangeTracker.Entries()
        .Where(x =&gt; (int)x.State &gt; (int)EntityState.Unchanged)
        .GroupBy(x =&gt; (Type: x.Entity.GetType(), x.State ))
        .ToDictionary(x =&gt; x.Key, x =&gt; x.ToList());
  </code></pre>
  
  <p>Which one of these would perform better, and what are the benefits of using the new syntax vs the old?</p>