C# 如何在linq中删除?

C# 如何在linq中删除?,c#,linq,ado.net,C#,Linq,Ado.net,我从DB中选择一个id,然后我想删除具有此id的行: var ado = new mydbEntities(); var selItem = listView3.SelectedItems[0]; if (selItem != null) { var selId = (from t in ado.task where t.t_name == selItem.Text select new { t.id});

我从DB中选择一个id,然后我想删除具有此id的行:

var ado = new mydbEntities();
var selItem = listView3.SelectedItems[0];

if (selItem != null)
{
    var selId = (from t in ado.task
                 where t.t_name == selItem.Text
                 select new { t.id});

    ado.task.DeleteOnSubmit(selId);   //this command return error
}
我尝试使用
deleteosubmit
删除,但出现错误。
如何从数据库中删除行?

编辑:因为您似乎正在使用
ObjectSet
,所以需要使用

var ado = new mydbEntities();
var selItem = listView3.SelectedItems[0];

if (selItem != null)
{
    var tasksToDelete =  from t in ado.task
                         where t.t_name == selItem.Text
                         select t;

    ado.task.DeleteOnSubmit(tasksToDelete);
}

将实体作为参数,而不是匿名类型。这应该更有效

var sel = (from t in ado.task
           where t.t_name == selItem.Text
           select t).FirstOrDefault();

if(sel != null)
    ado.task.DeleteOnSubmit(sel);
如果要删除多个实体,请使用,它将获取可枚举的实体

var sel = from t in ado.task
          where t.t_name == selItem.Text
          select t;

ado.task.DeleteAllOnSubmit(sel);

您是否尝试过
var selId=(bla).ToArray()
?虽然不知道你会犯什么错误,我只能猜测你的问题是什么。请告诉我此错误:
System.Data.Objects.ObjectSet'不包含“DeleteOnSubmit”的定义且没有扩展方法
我仍然收到此错误:
“System.Data.Objects.ObjectSet”不包含“DeleteOnSubmit”的定义且没有扩展方法
是的,我尝试了DeleteObject(),这次运行没有出错,但什么也没发生。行仍在db中。@user1726810您在对象上下文中调用了
SaveChanges()
,以保持更改吗?当然是,Iforgot。非常感谢现在一切正常
var sel = from t in ado.task
          where t.t_name == selItem.Text
          select t;

ado.task.DeleteAllOnSubmit(sel);