Основываясь на ваших шаблонах, одним из улучшений будет переход на использование StartsWith вместо Contains. StartsWith нужно только перебирать каждую строку до тех пор, пока не найдет первое несоответствие, вместо того, чтобы начинать поиск с каждой позиции символа, когда он ее найдет.
Кроме того, исходя из ваших шаблонов, похоже, что вы можете извлечь первую часть пути для myString, а затем отменить сравнение - ищите начальный путь myString в списке строк, а не в других. наоборот.
string[] pathComponents = myString.Split( Path.DirectorySeparatorChar );
string startPath = pathComponents[0] + Path.DirectorySeparatorChar;
return listOfStrings.Contains( startPath );
РЕДАКТИРОВАТЬ : Это было бы еще быстрее, если использовать идею HashSet, о которой упоминает Марк Грэвелл, поскольку вы можете изменить Contains
на ContainsKey
, и поиск будет O (1) вместо O (N) , Вы должны убедиться, что пути совпадают точно. Обратите внимание, что это не общее решение, как у @Marc Gravell, но оно адаптировано к вашим примерам.
Извините за пример C #. У меня не было достаточно кофе, чтобы перевести на VB.