从目录C#Asp.net MVC删除文件

时间:2019-01-29 10:21:39

标签: c# asp.net-mvc

代码

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();
     }  
}

在编译时出错。在Foreach循环中将参数传递给GetFiles()时出错,因为我正在传递字符串数组,但它仅接受一行表示单个项目。所以我如何以其他方式删除特定文件删除该文件,谢谢

4 个答案:

答案 0 :(得分:1)

将文件名检查移至循环内:

var fileNames = FindImageFromDb.Select(x => x.ImageName.ToString()).ToArray();
foreach (var file in di.GetFiles())
{
    if (fileNames.Any(f => f == file.Name))
    {
        file.Delete();
    }
} 

答案 1 :(得分:0)

t

答案 2 :(得分:0)

只需遍历文件名并在循环内检索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();
     }
 }

答案 3 :(得分:0)

使用Lambda-

var files = di.GetFiles().Where(x => Filenames.Any(y => y == x.Name));