2
我有兩個由ASP.NET身份使用的類。一個是用戶列表的支持類,另一個是角色。在數據庫中有三個表。 AspNetUsers,AspNetRoles和AspNetUserRoles。因爲這樣,他們在實體框架映射這三個被映射到只有兩個類:如何使用LINQ限制包含類的數據?
public partial class AspNetUser
{
public AspNetUser()
{
this.AspNetUserClaims = new List<AspNetUserClaim>();
this.AspNetUserLogins = new List<AspNetUserLogin>();
this.AspNetRoles = new List<AspNetRole>();
}
public int Id { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }
public virtual ICollection<AspNetUserClaim> AspNetUserClaims { get; set; }
public virtual ICollection<AspNetUserLogin> AspNetUserLogins { get; set; }
}
和
public partial class AspNetRole
{
public AspNetRole()
{
this.AspNetUsers = new List<AspNetUser>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<AspNetUser> AspNetUsers { get; set; }
}
誰能告訴我怎麼可以創建檢索所有的LINQ的聲明具有特定角色類型的用戶,或者如果我提供角色爲零的角色,那麼我希望看到所有用戶,而不是限制roleId。這裏是我的嘗試:
var user = await db.AspNetUsers
.Where(u => u.AspNetRoles.SelectMany(r => r.Id == roleId || roleId == 0))
.Include(u => u.AspNetRoles);
我也試過:
var user = await db.AspNetUsers
.Where(u => u.AspNetRoles.Select(r => r.Id == roleId || roleId == 0))
.Include(u => u.AspNetRoles);
參數的函數'Where'是需要返回'bool',所以你可以嘗試'。凡(U =>角色ID =一個FUNC = 0 || u.AspNetRoles.Any(r => r.Id == roleId))'或者類似這樣的 – Grundy 2014-11-22 09:25:05
可以請你把這個作爲答案,這樣我就可以接受了。謝謝 – 2014-11-22 09:51:52