如何让所有孩子在父母关系中达到特定的深度?

时间:2016-05-04 14:13:15

标签: c# .net entity-framework recursion include

我们首先使用EF代码并拥有具有以下结构的模型。需要将物品送到一定深度。例如,将所有作业类型设置为深度为2将获得具有空父项及其子项的所有JobTypes。

namespace My.Models
{
    public class JobType
    {
        public long Id { get; set; }

        [Required]
        public string Text { get; set; }

        public long? ParentJobTypeId { get; set; }

        public virtual JobType ParentJobType { get; set; }

        public virtual Collection<JobType> JobTypes { get; set; }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以生成包含字符串并使用Include

var query = ctx.JobType.Where(x => x.ParentJobTypeId == null);

if (count > 0)
{
    var include = string.Join(".", Enumerable.Range(1, count).Select(x => "JobTypes"));
    query = query.Include(include);
}