我有一個Privilege
public class Privilege
{
public virtual string Name { get; set; }
public virtual ICollection<Role> Roles { get; set; } = new List<Role>();
}
我有一個角色,其中包含一個集合Privilege和一個對應UserType的Privilege所屬。
public class Role
{
public virtual ICollection<Privilege> Privileges { get; set;} = new List<Privilege>();
public virtual UserType UserType { get; set;}
}
我正在嘗試List<Privilege>從僅包含我通過的特權回購中Privileges獲取一個Role。我的問題有點令人困惑,因為這兩個類都有另一個類的集合,而且這個代碼庫非常像意大利面條,無法更改。
這是我的嘗試,問題是我實際上無法得到 aList<Privilege>而是取回這個瘋狂的IQueryable<IEnumerable<ICollection<Privilege>>>變數。
_privRepo.Query().Select(p => p.Roles.ToList().Where(r => r.UserType == UserType.Manager).Select(x => x.Privileges);
uj5u.com熱心網友回復:
假設_privRepo是一個 entityFramework DbContext,我會說這樣的事情應該可以解決問題:
var privileges = _privRepo.Where(p => p.Roles.Any(r => r.UserType == UserType.Manager)).ToList();
或異步版本
var privileges = await _privRepo.Where(p => p.Roles.Any(r => r.UserType == UserType.Manager)).ToListAsync();
uj5u.com熱心網友回復:
你必須重構你的代碼,如果它是多對多關系,那么應該有另一個類來建立它們之間的關系。
https://docs.microsoft.com/en-us/ef/core/modeling/relationships
盡管您找到了查詢的解決方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478169.html
上一篇:如何動態地在運算式中應用運算式?
