Хотя другие ответы являются лучшим решением проблемы, они не объясняют, почему оригинальный код не работал. Проблема заключается в том, что алгоритм перезаписывает значение переменной isInList, которая, следовательно, будет верна только для последнего файла в списке. Это решило бы эту проблему:
FileInfo[] filePaths = di.GetFiles("*.pdf");
for (int i = 0; i < filePaths.Length; i++)
{
isInList = false
foreach (string fileName in usedFileNames)
{
if (fileName.Equals(filePaths[i].Name))
{
isInList = true;
break;
}
}
if (isInList == false)
{
PDFReaderChooser chooser = new PDFReaderChooser(filePaths[i].Name);
usedFileNames.Add(filePaths[i].Name);
}
}
Я бы добавил, что лучше использовать HashSet вместо List для вашей коллекции usedFileNames. Хеш-набор предназначен для эффективного определения того, содержит ли он данный элемент. Список, если я правильно помню, выполняет линейный поиск, который (для большого количества элементов) неэффективен.