2011-11-17 44 views
0

我有一羣用戶,每個用戶可以屬於多個角色。如何獲得與角色匹配的用戶

我試圖寫一些代碼來獲取屬於某個區域並具有特定角色的用戶。

我想出了:

_db.Users.Where(
    x => x.Roles.Contains(n => n.Name == "Some Role Name") 
    && x.AreaId == areaId); 

這不工作,雖然。有誰知道我要去哪裏錯了,我該如何修復它?

回答

1

嘗試:

_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name") 
    && x.AreaId == areaId); 
1

Contains()正在尋找枚舉內的比賽,所以你必須傳遞一個Role實例 - 你想傳遞一個條件的拉姆達所以使用Any()代替:

_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name") 
       && x.AreaId == areaId); 
+0

我想你會發現,有eoor操作「&&」不能被應用到更新 – AnonyMouse

2

首先,您正在使用一個等號=進行比較,而不是==,使用&& x.AreaId = areaId。另一種方法是使用Any而不是的x.Roles.Contains(n => n.Name == "Some Role Name")

+0

好點的操作數? – AnonyMouse

+0

@AnonyMouse做了'Any'爲你的工作類型「布爾」和「廉政」 – norlando

+0

@norlando是的,它表示感謝。 – AnonyMouse

相關問題