使用 C# lamda 表達式寫的兩種遞歸函數

//將一個平行數據,整理爲一個樹形數據
private void Test1(List<myType> allTypeList)
{
  //查找父節點
 List<myType> rootType = allTypeList.Where(o => o.ParentId == -1).ToList();
  //遞歸主函數
 Action<myType> addChildType = null;
 addChildType
  = (typeInfo =>
     {
      var childInfo = allTypeList.Where(o => o.ParentId == typeInfo.id);
      if (childInfo.IsNullOrDbNull())
       return;
      childInfo.All(
       o =>
        {
         typeInfo.ChildTypes.Add(o);
         addChildType(o);
         return true;
        });
     });
  //遞歸調用
 allTypeList.ForEach(
  o =>
   {
    addChildType(o);
   });
}ide

相關文章
相關標籤/搜索