title: Generic list FindAll() vs. foreach
body: <p>I'm looking through a generic list to find items based on a certain parameter.</p>
  
  <p>In General, what would be the best and fastest implementation?<br>
  1. Looping through each item in the list and saving each match to a new list and returning that</p>
  
  <pre><code>foreach(string s in list)
  { 
      if(s == "match")
      {
         newList.Add(s);
      }
  } 
  
  return newList;
  </code></pre>
  
  <p>Or<br>
  2. Using the FindAll method and passing it a delegate.</p>
  
  <pre><code>newList = list.FindAll(delegate(string s){return s == "match";});
  </code></pre>
  
  <p>Don't they both run in ~ O(N)? What would be the best practice here?</p>
  
  <p>Regards,
  Jonathan</p>