internal static Menu Union(Menu first, Menu second) { Menu result = null; if (first == null) { if (second != null) { result = second.Clone(); } } else { result = first.Clone(); if (second != null) { foreach (var item in second.Children) { if (!result.ContainsChild(item.Id)) { result.AppendChild(item); } } } } return(result); }
internal static Menu Intersact(Menu first, Menu second) { if (first == null || second == null || first.IsEmpty || second.IsEmpty) { return(null); } var result = first.CloneMain(); foreach (var item in first.Children) { if (second.ContainsChild(item.Id)) { result.AppendChild(item.Clone()); } } return(result); }