胖子天骄的MES系统
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

66 строки
1.8 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace BPA.MES.Base.Core
  5. {
  6. /// <summary>
  7. /// 名 称 :
  8. /// 创 建 人 :yangxiao
  9. /// 创建时间 : 2023/3/4 9:50:52
  10. /// 描 述 :
  11. /// </summary>
  12. public static class TreeExtensions
  13. {
  14. public static List<T> BuildTree<T>(this List<T> list, string rootId = "") where T : class, ITree<T>
  15. {
  16. string rootId2 = rootId;
  17. List<T> list2 = list;
  18. List<T> resul = null;
  19. if (list2.HasVal())
  20. {
  21. List<T> list3 = list2.Where((T e) => e.ParentId == rootId2).ToList();
  22. if (list3.HasVal())
  23. {
  24. resul = new List<T>();
  25. list3.ForEach(delegate (T it)
  26. {
  27. it.Children = list2.BuildTree(it.Id);
  28. resul.Add(it);
  29. });
  30. }
  31. }
  32. return resul;
  33. }
  34. public interface ITree<T> where T : class
  35. {
  36. string Id { get; set; }
  37. string ParentId { get; set; }
  38. List<T> Children { get; set; }
  39. }
  40. public static List<T> DeleteTreeNodes<T>(this List<T> list, Func<T, bool> condition) where T : class, ITree<T>
  41. {
  42. if (list.HasVal())
  43. {
  44. for (int i = 0; i < list.Count; i++)
  45. {
  46. T val = list[i];
  47. if (condition(val))
  48. {
  49. list.Remove(val);
  50. }
  51. else if (val.Children.HasVal())
  52. {
  53. val.Children.DeleteTreeNodes(condition);
  54. }
  55. }
  56. }
  57. return list;
  58. }
  59. }
  60. }