Bladeren bron

支持平铺开任意树形结构数据

懒得勤快 4 jaren geleden
bovenliggende
commit
c44dd95e59
1 gewijzigde bestanden met toevoegingen van 20 en 0 verwijderingen
  1. 20 0
      Masuit.Tools.Abstractions/Models/TreeExtensions.cs

+ 20 - 0
Masuit.Tools.Abstractions/Models/TreeExtensions.cs

@@ -56,6 +56,26 @@ namespace Masuit.Tools.Models
                 result.Add(item);
                 result.AddRange(item.Children.Flatten());
             }
+
+            return result;
+        }
+
+        /// <summary>
+        /// 平铺开任意树形结构数据
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="items"></param>
+        /// <param name="selector"></param>
+        /// <returns></returns>
+        public static IEnumerable<T> Flatten<T>(this IEnumerable<T> items, Func<T, IEnumerable<T>> selector)
+        {
+            var result = new List<T>();
+            foreach (var item in items)
+            {
+                result.Add(item);
+                result.AddRange(selector(item).Flatten(selector));
+            }
+
             return result;
         }