我想使用linq基于类似id删除多条记录我知道一次删除单个id但我希望它删除所有数据,如果链接ID相同。下面的代码是删除单个链接ID行现在所有行。
VFDataClassesDataContext con = new VFDataClassesDataContext(Globals.con);
LocationSetting LocationSettings = con.LocationSettings.First(w => w.LinkId == 1);
con.LocationSettings.DeleteOnSubmit(LocationSettings);
con.SubmitChanges();
如果我发送id 1来删除行,那么如果有一个与id 1链接的多个记录,那么所有记录都将被删除。
表就像这个ID,LinkID,Value,Type,TimeDate
价值就是这样
1, 0 , USA , R , 2013-10-25 20:09:29.043
2, 0 , UAE , R , 2013-10-25 20:09:29.043
3, 0 , AUS , R, 2013-10-25 20:09:29.043
4, 1 , SA , A , 2013-10-25 20:09:29.043
5, 1 , UA , A , 2013-10-25 20:09:29.043
6, 1 , AS , A , 2013-10-25 20:09:29.043
7, 2 , SA , A , 2013-10-25 20:09:29.043
8, 2 , UA , A , 2013-10-25 20:09:29.043
9, 2 , AS , A , 2013-10-25 20:09:29.043
这种方式是同一个表中的数据
答案 0 :(得分:1)
查询您要删除的项目并将其传递给DeleteAllOnSubmit()
方法。
听起来您想要删除多个具有相同LinkId
的项目。按LinkId
对它们进行分组,并获取该组具有多个项目的项目。
var query =
from ls in context.LocationSettings
group ls by ls.LinkId into g
where g.Count() > 1
from ls in g
select ls;
context.LocationSettings.DeleteOnSubmit(query);
context.SubmitChanges();