簡體   English   中英

創建 Class Object 的集合

[英]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 ,但實際上我無法訪問CounterDetailsTeamDetails 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM