如果文件不存在,请删除数据库中的值

时间:2015-11-26 09:35:58

标签: c# linq asp.net-mvc-5

我正在扫描像这样的文件夹

DirectoryInfo di = new DirectoryInfo(path);
var folders = di.GetDirectories().ToList().Select(d => d.Name);

var files = di.GetFiles();

我将文件名保存到数据库中,并且可以像这样从数据库中获取所有文件

var image = db.Images.ToList() 

如果文件不存在,我想删除数据库中的行

我正在尝试这样的事情,但它不起作用

var myimages = db.Images.ToList();
foreach (var img in myimages) {

var fileExist = files.FirstOrDefault(x => x.Name.ToString().Equals(img));

if (fileExist == null)
{
Delete from database
}

4 个答案:

答案 0 :(得分:0)

如果数据库中的每一行都有id,可以试试这个:

var myimages = db.Images.ToList();
string ids = "";
foreach (var img in myimages) {

    var fileExist = files.FirstOrDefault(x => x.Name.ToString().Equals(img));

    if (fileExist != null)
        ids+=img.id.ToSting()+",";

}

if(ids=="")
   return

ids = ids.Remove(ids.Length-1,1);
db.Database.ExecuteSqlCommand("delete from [Images] where id not in ("+ids+")");

答案 1 :(得分:0)

应该是你的dbobject.yourtable.remove(img);

答案 2 :(得分:0)

你可以试试这个:

if(fileexist == null)
{
   db.Images.Remove(img);
   db.SaveChanges();
}

答案 3 :(得分:0)

这是一个简单的问题,希望这是有效的。祝你好运

我认为你的Image类包含一个名字字段,如果是这样的话。否则只需修改它。只要问你是否有疑问

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);