我需要得到一个嵌套集合的节点,通过它深入linq。Linq无限嵌套查询
这是嵌套类:
public class Group
{
public int Id { get; set; }
public string Description { get; set; }
public int ParentId { get; set; }
public List<Group> Groups { get; set; }
}
本类的每个实例可具有组方法内的多个实例等。每个实例通过ParentId属性链接。
我需要,有一个Group类的实例,检索他的父亲。我试着用这样的:
var parent = _repositoryGroups
.Where(g => g.Id == [my Group instance].ParentId)
.SelectMany(g => g.Groups)
.FirstOrDefault()
我不知道为什么,但并不总是它找到父亲实例,并开始从第二个层面看(但是这不是一个真正的问题)。
通过这个嵌套类的所有深处找到元素的最佳方法是什么?
感谢
我认为你在滥用SelectMany。如果你删除该行,它应该工作 – Schiavini
我同意@Schiavini。如果没有'SelectMany',查询会返回具有所需id的第一个组(返回父亲)。从该父项中选择所有组,然后采用第一个组看起来会显示返回父项的第一个子项,而不是父项。 – SimpleVar
没有'SelectMany'就无法工作。它只检索第一级别下的群组... –