Я пытаюсь проверить, находится ли строка в массиве, и если продолжается, даже если fileInfo.Name.Contain строка, которая находится в files.Any:

\\FILES LIKE DATABASE.MDB IS IN C:PROJECTS\HOLON\DATABASE.MDB
                        **if (files.Any((fileInfo.Name.Contains)))** 
\\DO SOMETHING
                        Console.WriteLine(
                         fileInfo.Name, fileInfo.Length, 
c#
-1
Shay Rahamim 3 Май 2019 в 09:37

3 ответа

Лучший ответ
if (Array.Exists(files, element => element.Contains(fileInfo.Name)))
0
oguz ismail 6 Май 2019 в 19:02

Итак, у вас есть коллекция полных путей к файлам? И вы хотите проверить, совпадают ли одна или несколько из этих записей в списке с определенным именем файла?

Возможно, это сработает для вас:

string fileToSearch = "DATABASE.MDB";
bool found = files.Any(fileName => new FileInfo(fileName).Name.ToUpper() == fileToSearch.ToUpper());

Редактировать:

Альтернативой созданию новых объектов FileInfo было бы использование System.IO.Path:

bool found = files.Any(fileName => Path.GetFileName(fileName).ToUpper() == fileToSearch.ToUpper());

Изменить 2:

С другой стороны, если вы хотите найти определенное имя файла и использовать результат, вы можете сделать что-то вроде этого:

var fileToSearch = "DATABASE.MDB";

var fileInfo =
    (from f in files
     let fi = new FileInfo(f)
     where fi.Name.ToUpper() == fileToSearch.ToUpper()
     select fi).FirstOrDefault();

if (fileInfo != null)
{
    if (fileInfo.Exists)
    {
        Console.WriteLine($"{fileInfo.Name} ({fileInfo.Length} bytes).");
    }
    else
    {
        Console.WriteLine($"{fileInfo.Name} (does not exist).");
    }
}

Я использовал запрос LINQ здесь для удобства чтения. Вы также можете использовать методы расширения (files.Select(f => new FileInfo(f)).Where(fi => fi.Name.ToUpper() == fileToSearch.ToUpper()).FirstOrDefault()), но это ваше дело.

0
Bart Hofland 3 Май 2019 в 08:04

Если у вас уже есть имена файлов, собранные в массиве, то вы должны сделать это следующим образом:

if (files.Any() && files.Contains(fileInfo.Name))
{
   // Do something
}

Если вы просто хотите проверить, существует ли файл, вы можете использовать File.Exists:

if(System.IO.File.Exists(fileInfo.Name))
{
    // Do Something
}
2
Leon 3 Май 2019 в 07:08