在Linq中删除查询

Ani*_*Ani 7 c# linq linq-to-sql

我有这个简单的代码,但它显示错误.我不知道我哪里错了.我在最后一行显示错误."DeleteOnSubmit"linq_testDataContext db = new linq_testDataContext();

 linq_testDataContext db = new linq_testDataContext();
 var remove = from aremove in db.logins
         where aremove.username == userNameString && aremove.Password == pwdString
         select aremove;
 db.logins.DeleteOnSubmit(remove);
Run Code Online (Sandbox Code Playgroud)

Phi*_*ier 5

DeleteOnSubmit接受单个对象。你正在传递一个IEnumerable<login>给它。DeleteAllOnSubmit改为使用,或从结果集合中选择一个对象,如下所示:

var remove = (from aremove in db.logins 
             where aremove.username == userNameString 
                && aremove.Password == pwdString 
             select aremove).FirstOrDefault(); 

if(remove != null)
{
    db.logins.DeleteOnSubmit(remove);
}
Run Code Online (Sandbox Code Playgroud)


Muk*_*mar 5

您缺少删除所有实体的 foreach 循环。

使用如下

var remove = from aremove in db.logins
     where aremove.username == userNameString && aremove.Password == pwdString
     select aremove;
Run Code Online (Sandbox Code Playgroud)

在那之后

foreach (var detail in remove)
{
    db.logins.DeleteOnSubmit(detail);
}
Run Code Online (Sandbox Code Playgroud)

最后

 try
{
    db.SubmitChanges();
}
catch (Exception e)
{
    // Provide for exceptions.
}
Run Code Online (Sandbox Code Playgroud)

希望这会帮助你。