C# 如何在linq中删除?
我从DB中选择一个id,然后我想删除具有此id的行: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});
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);