Или вы можете упростить свою логику с помощью HashSet
:
readonly HashSet<string> AllowedExtensions = new HashSet<string>(
{ ".SLDPRT", ".SLDASM", ".SLDDRW" },
StringComparer.OrdinalIgnoreCase);
и в вашем методе, который получает файлы:
string[] solidworksFileList = Directory.GetFiles(args[0], "*.SLD???",
SearchOption.AllDirectories)
.Where(str => AllowedExtensions.Contains(Path.GetExtension(str)) &&
!Path.GetFileName(str).StartsWith("~$"))
.ToArray();
Это было бы более общим решением, так как вы могли бы добавить любое количество расширений к HashSet
, и поиск по-прежнему был бы близок к постоянному времени. И это намного проще, чем набирать произвольно большое количество str.EndsWith
условных выражений.