如何使用linq删除基于id的喜欢的数据?

时间:2013-10-25 15:31:19

标签: asp.net c#-4.0 linq-to-sql

我想使用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

这种方式是同一个表中的数据

1 个答案:

答案 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();