以分层方式获取嵌套元素C#Linq

时间:2019-02-20 14:39:03

标签: c# linq

我有一些对象列表,这些对象被映射为父子关系。 所以父母有很多孩子,孙子和曾孙等等。 我的表格结构如下

UserId UserNme 
1      Jack    
2      William   
3      asha      
4      winston

ParentId ChildId
2          3
3          4

所以我想按以下分层方式列出用户:

->用户不作为孩子(父母/非父母)
---->儿童用户
-------->大孩子用户
----------->曾孙子女

我尝试了以下代码,但未完成:

 public List<MarketingUserDto> GetChildAgents(List<MarketingUserDto> agents,List<MarketingUserDto> resultAgents)
    {

        if (agents.Count == 0)
        {                
            var parentagents = _userRegistrationRepository.GetMany(x => ((x.IsParentAgent ?? false) == true && x.UserTypeId == (short)Enums.UserTypes.Agent) || (x.UserTypeId == (short)Enums.UserTypes.Super_Manager && (x.IsParentAgent ?? false) == false));
            this.GetChildAgents(Mapper.Map<List<UserRegistration>, List<MarketingUserDto>>(parentagents.ToList()), resultAgents);
        }
        else
        {
            foreach (var agent in agents)
            {
                var childagents = _agentMappingRepository.GetMany(x => x.ParentId == agent.UserId, y => y.UserRegistration);

            }
        }
        return resultAgents;
    }

请问您如何实现此建议?

1 个答案:

答案 0 :(得分:0)

如果您不想重新发明压扁轮,请查看MoreLinq的Lock extension method

如果抓住了NuGet package,您会得到它以及更多有用的LINQ扩展。