我有一羣用戶,每個用戶可以屬於多個角色。如何獲得與角色匹配的用戶
我試圖寫一些代碼來獲取屬於某個區域並具有特定角色的用戶。
我想出了:
_db.Users.Where(
x => x.Roles.Contains(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
這不工作,雖然。有誰知道我要去哪裏錯了,我該如何修復它?
我有一羣用戶,每個用戶可以屬於多個角色。如何獲得與角色匹配的用戶
我試圖寫一些代碼來獲取屬於某個區域並具有特定角色的用戶。
我想出了:
_db.Users.Where(
x => x.Roles.Contains(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
這不工作,雖然。有誰知道我要去哪裏錯了,我該如何修復它?
嘗試:
_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
Contains()
正在尋找枚舉內的比賽,所以你必須傳遞一個Role
實例 - 你想傳遞一個條件的拉姆達所以使用Any()
代替:
_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
首先,您正在使用一個等號=
進行比較,而不是==
,使用&& x.AreaId = areaId
。另一種方法是使用Any
而不是的x.Roles.Contains(n => n.Name == "Some Role Name")
。
好點的操作數? – AnonyMouse
@AnonyMouse做了'Any'爲你的工作類型「布爾」和「廉政」 – norlando
@norlando是的,它表示感謝。 – AnonyMouse
我想你會發現,有eoor操作「&&」不能被應用到更新 – AnonyMouse