I find it unlikely that it "hangs" on this line:
string[] result = (from i in AllProjects where i.ToLower().Contains(textToSearch) select i).ToArray();
Unless
AllProjects
contains a humongous number of strings it it requires massive amounts of disk paging to support the entire search - which is very unlikely.
Admittedly, a considerable number of string searches would take considerable time, but with modern equipment it shouldn't hang - and a major fault in a 15 year old class is very unlikely.
So I'd start by looking at how you are sure it's that line that causes the problem - is it via the debugger or some "other way"?
What does the debugger show the linked list looks like? Are the forward and backward links OK? And so forth.
It's more likely to be other code like an update event on your listbox that causes the problem.