2013-10-25 25 views
0

我想刪除多個記錄使用linq base like id我知道一次刪除單個id,但我希望它刪除所有數據,如果鏈接id是相同的。這是下面的代碼,現在刪除單個鏈接id行現在所有行。如何使用linq刪除基於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,鏈路ID,值,類型,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

查詢你想要的物品刪除並將它們傳遞給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(); 
+0

喜傑夫沒有發生我嘗試你的榜樣 –

+0

你能肯定地說,有在數據庫中記錄有相同'LinkId's?如果查詢中沒有返回任何內容,則可能沒有任何需要刪除的內容。 –

+0

請參閱編輯說明 –