title: Faster way to filter a list of objects in to another list based on a condition
body: <p>I have a list ( ios contacts ) which i need to filter based on the firstname , last name and email starting with the match string. I have about 5000 contacts and currently it takes about 2 seconds to filter results. Here is my code. </p>
  
  <pre><code>    var personList = people.FindAll (p =&gt; 
                          (p.LastName != null &amp;&amp; p.LastName.IndexOf (findstr, StringComparison.OrdinalIgnoreCase) == 0) || (p.FirstName != null &amp;&amp; p.FirstName.IndexOf (findstr, StringComparison.OrdinalIgnoreCase) == 0
                              || (p.GetEmails ().ToList ().Count &gt; 0 &amp;&amp; (p.GetEmails ().ToList ().FindAll (e =&gt; e.Value.IndexOf (findstr, StringComparison.OrdinalIgnoreCase) == 0).Count &gt; 0)))
  
                      );
  </code></pre>
  
  <p>Can anyone suggest a faster way to do this? Thanks</p>