如何使用lambda linq从数据库中删除行?

时间:2015-06-19 01:39:43

标签: c# android linq lambda

我想执行删除操作,以便在我正在开发的某个Android应用程序中取消用户的联系。以下方法返回"完成"但数据不会从表中删除。这有什么问题?

public string deleteFriend(int user, int friend) {
    int i = db.Friends.Where(x => x.Person.Id == user && x.Person1.Id == friend).Select(x => x.Id).First();           
    var rec=db.Friends.ToList();
    rec.RemoveAll(x=>rec.Any(xx=>xx.Id==i));
    db.SaveChanges();
    return "Done";
}

我正在使用实体框架LINQ。

2 个答案:

答案 0 :(得分:8)

尝试这样的事情:

var friend = db.Friends.Where (x=>x.person.Id == user && x.Person1.Id == friend).FirstorDefault();
if (friend != null)
 {
   db.friends.Remove(friend);
   db.SaveChanges()
 }

如果你有多个记录,那么你可以摆脱firstOrDefault并最后添加.ToList()。 而不是使用db.friends.RemoveRange(朋友)

它更干净,希望这有帮助

由于

答案 1 :(得分:1)

使用(1,2,3)中的ID

           List<int> ids = new List<int>(){1,2,3};
            var table1 = _context.table1.Where(x => ids.Contains(x.Id)).ToList();
            if (table1 != null && table1.Count > 0) {
                _context.table1.RemoveRange(table1 );
                _context.SaveChanges();
            }