title: Check if one IEnumerable contains all elements of another IEnumerable
body: <p>What is the fastest way to determine if one IEnumerable contains all the elements of another IEnumerable when comparing a field/property of each element in both collections?</p>
  
  <hr>
  
  <pre><code>public class Item
  {
      public string Value;
  
      public Item(string value)
      {
          Value = value;
      }
  }
  
  //example usage
  
  Item[] List1 = {new Item("1"),new Item("a")};
  Item[] List2 = {new Item("a"),new Item("b"),new Item("c"),new Item("1")};
  
  bool Contains(IEnumerable&lt;Item&gt; list1, IEnumerable&lt;Item&gt;, list2)
  {
      var list1Values = list1.Select(item =&gt; item.Value);
      var list2Values = list2.Select(item =&gt; item.Value);
  
      return //are ALL of list1Values in list2Values?
  }
  
  Contains(List1,List2) // should return true
  Contains(List2,List1) // should return false
  </code></pre>