Удалить файлы из каталога C # Asp.net MVC - PullRequest
0 голосов
/ 29 января 2019

Код

public ActionResult DeleteProduct(int id)
{
     var FindImageFromDb = DB.ImageGalleries.Where(x => x.ProductIdFk == id).ToList();
     DirectoryInfo di = new DirectoryInfo(@"Path");
     string[] Filenames = FindImageFromDb.Select(x => x.ImageName.ToString()).ToArray();
     foreach (FileInfo Files in di.GetFiles(Filenames))
     {
         Files.Delete();
     }  
}

Получение ошибки во время компиляции.Ошибка при передаче параметра в GetFiles () в цикле Foreach, потому что я передаю строковый массив, но он принимает только одну строку, что означает один элемент.так как я могу удалить определенные файлы любым другим способом, чтобы удалить эти файлы Спасибо

Ответы [ 4 ]

0 голосов
/ 29 января 2019

Использование лямбды -

var files = di.GetFiles().Where(x => Filenames.Any(y => y == x.Name));
0 голосов
/ 29 января 2019

Просто переберите имена файлов и получите FileInfo внутри цикла:

 foreach (string filename in filenames)
 {
     FileInfo[] fi = di.GetFiles(filename);
     if (fi != null && fi.Length > 0)
     {
         // Consider if you'd like to check that only one file was found
         // This might happen because GetFiles considers its input as a pattern
         // However if you are using full file names (which is most likely the case), that shouldn't be necessary
         fi[0].Delete();
     }
 }
0 голосов
/ 29 января 2019

Переместите проверку имени файла внутрь цикла:

var fileNames = FindImageFromDb.Select(x => x.ImageName.ToString()).ToArray();
foreach (var file in di.GetFiles())
{
    if (fileNames.Any(f => f == file.Name))
    {
        file.Delete();
    }
} 
0 голосов
/ 29 января 2019
foreach (FileInfo Files in Filenames)
     {
         di.GetFiles(Files).delete()

     }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...