2011-04-17 132 views
0

更新:我基本上想得到一個給定角色的所有權限列表和所有權限列表。那麼我想標誌着SelectListItems的列表中的每個許可的選擇時,他們已經屬於該角色LINQ to Entities預測

我有三個表:

項目1 *角色-權限

我想創建和使用具有列表中的所有權限,投影IEnumerable的,但是當我投射到SelectItemList它標識已經與一個特定的角色相關的權限:

public IEnumerable GetAllPermissionsPLusRole(int projectid, int roleid) 
    { 
     using (var db = new Entities()) 
     { 
      var permissions = (from p in db.Permissions 
           select p).ToList(); 

      var permissionsForRole = from r in db.Roles 
            where r.RoleId == roleid && r.PrjectProjectId == contractid 
            select r.Permissions.ToList(); 

      IEnumerable<SelectListItem> selectList = from p in permissions select new SelectListItem { Text = p.PermissionName, Value = p.PermissionId.ToString()}; 
      return selectList; 
     } 
    } 

我想要做的是在投影中有一個條件Selected,所以當我顯示列表時,我可以顯示已經與角色關聯的權限。

在此先感謝。

回答

1

如果我的理解對不對,你已經獲取的所有數據,現在你只需要檢查,如果獲准在permissionsForRole列表,即這樣的:

IEnumerable<SelectListItem> selectList = from p in permissions 
    select new SelectListItem 
    { 
     Text = p.PermissionName, 
     Value = p.PermissionId.ToString(), 
     Selected = permissionsForRole.Contains(p) 
    }; 
+0

謝謝...所以當你指出時很明顯。很好的幫助。 – abarr 2011-04-17 10:51:39

+0

對不起A沒有工作。不能在permissionsForRole上使用Contains。我一直在一個小時之內甩掉它,但似乎無法做到。 – abarr 2011-04-17 12:06:21

+0

'permissions'的類型是什麼?什麼是'permissionsForRole'類型? – NOtherDev 2011-04-17 12:07:44