2013-07-02 54 views
0

加盟我有一個類徽章:(例如)我怎麼能執行這種類型的實體框架與LINQ

**Badge** 
-User (Owned by) 
-Title (e.g votesOnThingReached5) 

用戶通過類UserBadge自己的徽章,(這是必需的)。

**UserBadge:** 
    -User 
    -Badge 

所以:

myUser.UserBadges(); //Gets all user's current badges they own. 
db.Badges(); //Gets all badges avaialble to be earnt. 

我只需要獲取用戶目前沒有徽章。

我該怎麼寫這個LINQ?這裏是我的pseduo代碼示例:

db.Badges(Where(b => 
new query(!myUser.UserBadges.contains(b)); 

回答

1
db.Badges.Where(b=>!myUser.UserBadges.Contains(b)); 
2

你有你的Badge POCO一個用戶收藏?如果是這樣的:

db.Badges.Where(b => !b.Users.Any(u=>u.UserId == myUserId));

否則,你可以這樣做:

List<int> ownedBadges = myUser.Badges.Select(x=> x.BadgeId).ToList(); 
db.Badges.Where(b => !ownedBadges.Contains(b.BadgeId)); 
+0

需要一個'ToList()''的調用Select'後,我覺得 –

+0

謝謝,@Sahuagin。糾正。 – 2013-07-03 00:47:56