如何使用删除Linq中的所有功能

时间:2013-01-24 07:17:11

标签: c# linq

我正在尝试使用此查询从EF中删除记录:

 public void ClearAllLocks(Lock LockObj)
    {
        var Stf = context.Locks.First(S => S.UserId == LockObj.UserId);

        if (Stf == null)
        {
            return;
        }
        context.Locks.DeleteObject(Stf);
        context.SaveChanges();
    }

但我只能删除第一条记录,我也知道原因(因为我使用的是First),我应该写什么而不是First,以便删除所有条目。

1 个答案:

答案 0 :(得分:2)

public void ClearAllLocks(Lock LockObj)
{
    var locksToDelete = context.Locks.Where(s => s.UserId == LockObj.UserId);

    foreach(var stf in locksToDelete)
       context.Locks.DeleteObject(stf);

    context.SaveChanges();
}

您也可以使用EntityFramework.Extended(在NuGet上搜索):

public void ClearAllLocks(Lock LockObj)
{
    context.Locks.Delete(s => s.UserId == LockObj.UserId);        
    context.SaveChanges();
}