Case-Insensitive List Search

I have a list testList that contains a bunch of strings. I would like to add a new string into the testList only if it doesn’t already exist in the list. Therefore, I need to do a case-insensitive search of the list and make it efficient. I can’t use Contains because that doesn’t take into account the casing. I also don’t want to use ToUpper/ToLower for performance reasons. I came across this method, which works:

    if(testList.FindAll(x => x.IndexOf(keyword, 
                       StringComparison.OrdinalIgnoreCase) >= 0).Count > 0)
       Console.WriteLine("Found in list");

This works, but it also matches partial words. If the list contains “goat”, I can’t add “oat” because it claims that “oat” is already in the list. Is there a way to efficiently search lists in a case insensitive manner, where words have to match exactly? thanks

8 Answers
8

Leave a Comment