【问题标题】:Multiple select query in linq c#linq c#中的多选查询
【发布时间】:2019-07-03 00:04:40
【问题描述】:

我有以下课程。

public class Candidate
{
    public long Id { get; set; )
    public List<JobAssigned> JobAssigned { get; set; }       
}

public class JobAssigned
{
    public long Id { get; set; }     
    public List<StageScore> StageScore { get; set; }
    public List<CriteriaScore> CriteriaScore { get; set; }
    public List<StageComment> StageComment { get; set; }       
}

public class StageComment
{
    public long Id { get; set; }
    public JobAssigned  JobAssigned { get; set; }
    public long JobAssignedId { get; set; }
    public long PipelineStageId { get; set; }
    public long CandidateId { get; set; }
    public long JobId { get; set; }
    public string Comment { get; set; }
}

public class StageScore
{
    public long Id { get; set; }
    public JobAssigned JobAssigned { get; set; }
    public long JobAssignedId { get; set; }
    public long Rating { get; set; }
    public long PipelineStageId { get; set; }
    public long CandidateId { get; set; }
    public long JobId { get; set; }
}

public class CriteriaScore
{
    public long Id { get; set; }
    public JobAssigned JobAssigned { get; set; }
    public long JobAssignedId { get; set; }
    public long Rating { get; set; }
    public long PipelineStageCriteriaId { get; set; }
    public long CandidateId { get; set; }
    public long JobId { get; set; }
}

我想一次性加载所有相关的表。我正在尝试以下操作,

List<Candidate> candidate = _context.Candidates.                
          Include(f => f.JobAssigned.Select(g => g.StageScore))
          .OrderBy(x => x.Id).ToList();

当我做.Select().Select() 时,它给出了一个错误。如何在单个查询中获取所有集合?

【问题讨论】:

  • “出现错误”错误告诉你什么?
  • 列出 候选人 = _context.Candidates。包括(f => f.JobAssigned.Select(g => g.StageScore).Select(h => h.StageComment))。 .OrderBy(x => x.Id).ToList();我试图这样做,但对于 2nd Select() 没有任何建议。
  • 按照给定的here尝试ThenInclude

标签: c# entity-framework linq


【解决方案1】:

看看我写的this article,它动态加载所有对象。

以下是包含所有对象的方法。

我希望不会有圈子引用。

我在上面的url写的插件可以处理圆引用

List<Candidate> candidate = _context.Candidates.                
    Include(f => f.JobAssigned.Select(g => g.StageScore.Select(a=> a.JobAssigned))).
    Include(f => f.JobAssigned.Select(g => g.CriteriaScore.Select(a=> a.JobAssigned))).
    Include(f => f.JobAssigned.Select(g => g.StageComment.Select(a=> a.JobAssigned))).
    OrderBy(x => x.Id).ToList();

【讨论】:

  • 我认为它也可以像下面这样工作:List Candidate = _context.Candidates。包括(f => f.JobAssigned.Select(a => a.StageScore))。包括(g => h.JobAssigned.Select(b => b.StageComment))。 Include(h => h.JobAssigned.Select(c => c.CriteriaScore)) .OrderBy(x => x.Id).ToList();
  • 你可以测试一下 :)
猜你喜欢
  • 2020-06-19
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
相关资源
最近更新 更多