title: High performance "contains" search in list of strings in C#
body: <p>I have a list of approx. 500,000 strings, each approx. 100 characters long. Given a search term, I want to identify all strings in the list that contain the search term. At the moment I  am doing this with a plain old dataset using the Select method ("MATCH %term%"). This takes about 600ms on my laptop. I'd like to make it faster, maybe 100-200ms.</p>
  
  <p>What would be a recommended approach?</p>
  
  <p>Performance is critical so I can trade memory footprint for better performance if necessary (within reason). The list of strings will not change once initialised so calculating hashes would also be an option.</p>
  
  <p>Does anyone have a recommendation and which C# data structures are best suited to the task? </p>