title: Using Linq to remove from set where key exists in other set?
body: <p>What is the proper way to do set subtraction using Linq?  I have a List of 8000+ banks where I want to remove a portion of those based on the routing number.  The portion is in another List and routing number is the key property to both.  Here is a simplification:</p>
  
  <pre><code>public class Bank
  {
      public string RoutingNumber { get; set; }
      public string Name { get; set; }
  }
  
  var removeThese = new List&lt;string&gt;() { "111", "444", "777" };
  
  var banks = new List&lt;Bank&gt;()
  {
      new Bank() { RoutingNumber = "111", Name = "First Federal" },
      new Bank() { RoutingNumber = "222", Name = "Second Federal" },
      new Bank() { RoutingNumber = "333", Name = "Third Federal" },
      new Bank() { RoutingNumber = "444", Name = "Fourth Federal" },
      new Bank() { RoutingNumber = "555", Name = "Fifth Federal" },
      new Bank() { RoutingNumber = "666", Name = "Sixth Federal" },
      new Bank() { RoutingNumber = "777", Name = "Seventh Federal" },
      new Bank() { RoutingNumber = "888", Name = "Eight Federal" },
      new Bank() { RoutingNumber = "999", Name = "Ninth Federal" },
  };
  
  var query = banks.Remove(banks.Where(x =&gt; removeThese.Contains(x.RoutingNumber)));
  </code></pre>