2017-06-21 74 views
1

我在我的SQL數據庫中有以下(簡化)結構。 enter image description hereSQL/Linq查詢從多選到多選

現在我想選擇所有用戶尚未參與的組。 如果查詢是使用Linq/Entity Framework編寫的,但我也可以使用SQL語句,這將有所幫助。

我嘗試使用包括(使用EF):

.Include(g => g.Group_User) 

查詢和比使用:

.Where(g => g.Group_User.UserId != userId) 

,但沒有工作,可能是完全不這樣做的正確方法這些查詢的。

感謝您閱讀

回答

2

我想選擇所有組,其中用戶是沒有的一部分。

所以,你要沒有這個UserId一個組的用戶所有組,所以使用!Any==

var q = db.Group.Include(g => g.Group_User) 
    .Where(g => !g.Group_User.Any(gu => gu.UserId == userId)); 
+0

是這個工作,ReSharper的是sugesting這種變化:'g.Group_AspNetUsers.All(GU => gu.AspNetUsersid!= userId'這兩者之間有很大的區別嗎? – lordvlad30

+0

@ lordvlad30:不,resharper總是試圖避免使用'!'。使用你發現的更具可讀性。兩者都產生相同的結果並且效率相同。我更喜歡'!Any',因爲這是你的需求翻譯 –

+0

謝謝你的快速回答和幫助! (沒有足夠的聲望來讚揚,但你應得的) – lordvlad30