Я пытаюсь проверить, находится ли строка в массиве, и если она продолжается, даже если fileInfo.Name.Contains содержит строку, которая находится в файлах. Любой:
\\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,





Если у вас уже есть имена файлов, собранные в массив, то вы должны сделать это следующим образом:
if (files.Any() && files.Contains(fileInfo.Name))
{
// Do something
}
Если вы просто хотите проверить, существует ли файл, вы можете использовать File.Exists:
if (System.IO.File.Exists(fileInfo.Name))
{
// Do Something
}
Ага понял! Я думал, что это связано с тем, что имя файла существует или файл существует!
Итак, у вас есть коллекция полных путей к файлам? И вы хотите проверить, совпадают ли одна или несколько записей из этого списка с определенным именем файла?
Возможно, это сработает для вас:
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()), но это на ваше усмотрение.
if (Array.Exists(files, element => element.Contains(fileInfo.Name)))
@PrashantPimpale нет, вы можете использовать files.Any() также, чтобы проверить, есть ли какие-либо данные в массиве, потому что этот метод возвращает логическое значение.