コード例 #1
0
 /// <summary>
 /// Returns true if this is a descendant of parent.
 /// </summary>
 /// <returns>True if this is a descendant of parent.</returns>
 /// <param name="parent">parent</param>
 public bool IsDescendantOf(HierarchyId parent)
 {
     if (parent.GetLevel() > GetLevel())
     {
         return(false);
     }
     for (int i = 0; i < parent.GetLevel(); i++)
     {
         int cmp = CompareLongArrays(GetNodes()[i], parent.GetNodes()[i]);
         if (cmp != 0)
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #2
0
        public HierarchyId GetReparentedValue(HierarchyId oldRoot, HierarchyId newRoot)
        {
            if (!IsDescendantOf(oldRoot))
            {
                throw new ArgumentException(
                          string.Format(CultureInfo.InvariantCulture, GetReparentedValueOldRootExceptionMessage, oldRoot, ToString()), "oldRoot");
            }
            StringBuilder sb = new StringBuilder();

            sb.Append(PathSeparator);
            foreach (var node in newRoot.GetNodes())
            {
                sb.Append(LongArrayToString(node));
                sb.Append(PathSeparator);
            }
            foreach (var node in GetNodes().Skip(oldRoot.GetLevel()))
            {
                sb.Append(LongArrayToString(node));
                sb.Append(PathSeparator);
            }
            return(new HierarchyId(sb.ToString()));
        }