2016-08-13 55 views
0

我有看起來像這樣所有用戶的查詢:如何在我的LINQ查詢中使用HashSet?

from 
    u in db.AspNetUsers 
orderby 
    u.UserName 
select 
    ....

這工作正常。但現在我想過濾一個特定的用戶角色。有一個u.AspNetRoles是一個HashSet對象。每個對象都有一個Name屬性,該屬性是角色的名稱。

所以我只想選擇具有Name等於"SuperAdmin"的角色對象的用戶。

以前我只是嘗試使用角色數據連接表,但這不起作用,因爲有一個AspNetUserRoles表只有一個UserID和一個沒有主鍵的RoleID。據推測,不建議爲沒有主鍵的表創建實體類。

+0

需要說明的是:您只想找到「SuperAdmin」角色的用戶,對吧? – DWright

+0

是的,這是正確的。 – Ryan

回答

2

我認爲這確實你問:如果任何集合中的項目符合標準拉姆達(r => r.Name == "SuperAdmin",在這種情況下)

from 
    u in db.AspNetUsers 
where 
    u.AspNetRoles.Any(r => r.Name == "SuperAdmin") 
orderby 
    u.UserName 
select 
    . . . 

Any方法將返回true。如果用戶對象u的集合AspNetRoles中的任何項目具有Name,其中值爲"SuperAdmin",則Any的結果爲true。如果沒有任何項目符合標準,則Any返回false。

+0

謝謝你,正是我以後的樣子。 – Ryan