title: C# List<string> contains partial match from another List<string>
body: <p>I have these lists:</p>
  
  <pre><code>var list1 = new List&lt;string&gt;
  {
      "BOM_Add",
      "BOM_Edit",
      "BOM_Delete",
      "Paper_Add",
      "Paper_Edit",
      "Paper_Delete"
  };
  
  var list2 = new List&lt;string&gt; {"BOM", "Paper_Add"};
  </code></pre>
  
  <p>I want to create a third list of the common items based on a partial match. So, the third list should contain:</p>
  
  <pre><code>"BOM_Add",
  "BOM_Edit",
  "BOM_Delete",
  "Paper_Add"
  </code></pre>
  
  <p>because the second list contains "BOM".</p>
  
  <p>If the second list contained "_Edit", then I would expect the third list to have</p>
  
  <pre><code>"BOM_Edit",
  "Paper_Edit"
  </code></pre>
  
  <p>I know how to do this with <code>.Intersect()</code> if I spell out each item (e.g. "BOM_Add") in the second list, but I need it to be more flexible than that.</p>
  
  <p>Can this be done without iterating through each item on the first list? These lists may get very long and I would prefer to avoid that if I can.</p>