我在編寫linq查詢時遇到了麻煩,因爲我對它不熟悉。我有兩個表RosterSummaryData_Subject_Local
和RosterSummaryData_Subject_Local_Bands
。在其他表中刪除沒有參考的行
Subject_Local
包含pkSummarySubjectLocalID
和Subject_Local_Bands
包含一個外鍵參照該表(fkSummarySubjectlocalID
)。 Subject_Local
包含永遠不會使用的未使用或孤行行。我想要做的是刪除未使用/孤立的行,如果它們不在Subject_Local_Bands
中。
例如,如果我們看看這些示例表:
RosterSummaryData_Subject_Local RosterSummaryData_Subject_Local_Bands
pkSummarySubjectLocalID pkSummarySubjectLocalBandID fkSummarySubjectLocalID Score
1 1 2 10
2 2 4 20
3 3 5 30
4
5
在這兩個表可以看出,在Subject_Local.pkSummarySubjectLocalIDs
1和3從不Subject_Local_Bands
引用。我想從Subject_Local
中刪除它們。
這是我目前的LINQ代碼不
var local = customerContext.RosterSummaryData_Subject_Local;
var localBands = customerContext.RosterSummaryData_Subject_Local_Bands;
IEnumerable<RosterSummaryData_Subject_Local> redundantSubjectLocalRows;
redundantSubjectLocalRows = from subjLocal in customerContext.RosterSummaryData_Subject_Local
join subjLocalBands in customerContext.RosterSummaryData_Subject_Local_Bands on
subjLocal.pkSummarySubjectLocalID equals subjLocalBands.fkSummarySubjectLocalID
where subjLocalBands.fkSummarySubjectLocalID != subjLocal.pkSummarySubjectLocalID
select subjLocal.pkSummarySubjectLocalID;
customerContext.RosterSummaryData_Subject_Local.RemoveRange(redundantSubjectLocalRows);
我想用RemoveRange
所以我需要通過它在我的上下文類RosterSummaryData_Subject_Local
的IEnumerable
工作,但我不知道如何創建一個使用一個完成指定條件的linq查詢。任何幫助?
我最喜歡你的答案,除了它似乎只帶回在Subject_Local_Band中引用的行(這些是我想保留的ID)我想要的是相反的。我翻轉了相交,但我仍然有相同的結果。 – frontin 2014-11-21 21:30:44
問題是一個錯字,我想用除了但我說相交,修正,這種方法是用數據庫端的sql quesries完成的,其他的方法是從db中取得很多數據。 – dotctor 2014-11-22 06:39:18
不情願我得到upvote這個答案,這是肯定性感比我沉悶的錘子方法:-)'除()'嗯?每天學些新東西... – 2014-11-22 19:22:04