[英]Creating Collection of Class Object
我在我的項目中同時使用實體框架和 LINQ。 我正在嘗試使用以下語法獲取一些數據,
我正在使用以下模型,我有IList<TeamDetails>
public class OrganizationDetailsVM
{
public Guid Branch { get; set; }
public IList<TeamDetails> Teams { get; set; }
}
public class TeamDetails : Team
{
public IList<TeamMember> TeamMembers { get; set; }
}
問題是我正在嘗試使用以下查詢來填充我的OrganizationDetailsVM
,但實際上我無法訪問CounterDetails或TeamDetails class 中的屬性。
var teamQuery = _dbContext.PerfTeams
.Select(x => new OrganizationDetailsVM
{
Branch = filter.BranchId,
Teams = new List<TeamDetails>
{
//**I want my team details here as list of my TeamDetails class**
}
}).ToListAsync(cancellationToken);
正如我在評論中提到的,這里是相關的 PerfTeamMembers 類。
public class TeamMember : BaseEntity
{
[Required]
[MaxLength(6)]
public decimal StaffId { get; set; }
public virtual Team Teams { get; set; }
}
編輯:PerfTeam class 添加,我已經簡化了我的模型以便於理解。
public class Team : BaseEntity
{
[Required]
[StringLength(200)]
public string TeamName { get; set; }
[Required]
public Guid TeamTypeId { get; set; }
[Required]
[StringLength(4)]
public string TeamBranchId { get; set; }
[StringLength(4000)]
public string TeamDescription { get; set; }
[Required]
public Guid TeamPeriod { get; set; }
public virtual ICollection<TeamMember> TeamMembers { get; set; }
public virtual TeamType TeamTypes { get; set; }
}
var teamQuery = _dbContext.PerfTeams.Include(p=>p.CounterMember).Include(p=>p.TeamMember). .Select(x => new OrganizationDetailsVM
{
Branch = filter.BranchId,
Counters = new List<CounterMember>(p.CounterMembers);//or whatever you called it in ef
{
//**I want my counter details here as list of my CounterDetails class**
},
根據您的表結構,您似乎想要獲取 Team 和相關的 Team Members(因為 TeamDetail 僅包含 TeamMember),在這種情況下,您可以嘗試使用以下代碼:
var query = _dbContext.Teams
.Select(x => new OrganizationDetailsVM() {
Branch = x.TeamTypeId,
Teams = new List<TeamDetails>() {
new TeamDetails() {
TeamMembers = x.TeamMembers }
}
});
另外,在OrganizationDetailsVM class中,也可以將TeamDetail屬性改為TeamMember,然后在查詢Teams表時,可以直接得到相關的TeamMember。 像這樣的代碼:
public class OrganizationDetailsVM
{
public Guid Branch { get; set; }
public List<TeamMember> TeamMembers { get; set; }
}
查詢語句:
var query = _dbContext.Teams
.Select(x => new OrganizationDetailsVM()
{
Branch = x.TeamTypeId,
TeamMembers = x.TeamMembers.ToList()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.