title: What is the best way to check two List<T> lists for equality in C#
body: <p>There are many ways to do this but I feel like I've missed a function or something.</p>
  
  <p>Obviously <code>List == List</code> will use <code>Object.Equals()</code> and return <code>false</code>.</p>
  
  <p>If every element of the list is equal and present in the same location in the opposite list then I would consider them to be equal.  I'm using value types, but a correctly implemented Data object should work in the same fashion (i.e I'm not looking for a shallow copied list, only that the <em>value</em> of each object within is the same).</p>
  
  <p>I've tried searching and there are similar questions, but my question is an equality of every element, in an exact order.  </p>