2014-04-24 56 views
1

我使用实体框架和LINQ,我试图返回父母的阵列,而无需使用一个for循环。基本上这里是一个像我所面对的例子(我不能给出真实的例子,但这是同样的事情)。有一个人,当我找回那个人的时候,我想得到一个人的祖先阵列(只限男性)。因此,我会返回并排列[父亲,祖父,曾祖父,...]直到“父亲”属性为空,换句话说,我们不知道该人的父亲是谁。用Entity Framework做这件事最好的办法是什么?返回父母的列表与对象

下面是一个例子:

class Person() 
{ 
    public string Name { get; set; } 
    public Guid FatherId { get; set; } 
    public virtual Person Father { get; set; } 
} 

class PersonDto() 
{ 
    public string Name { get; set; } 
    public IEnumerable<PersonDto> Ancestors { get; set; } 
} 

我怎么会用一个循环做到这一点:

Person person = Context.People.Find(personId); 
PersonDto personDto = person.ToDto(); 

Person father = person.Father; 

while (father != null) 
{ 
    personDto.Ancestors.Add(father.ToDto()); 
    father = father.Father; 
} 
+0

如果你想给出一个你想要做的事情的代码示例,这将更清晰。也许嘲笑一个for循环,然后我们可以帮助你解决循环?我们没有足够的信息让我们继续。 – pquest

+0

感谢您的反馈,我添加了一个例子。希望它有帮助 – GBreen12

+0

在LINQ中,你可以做的最多的事情就是包含父属性,这样你的原始Person对象将有Parent,然后创建一个循环来创建祖先。 –

回答