Nun, ich scheine Aufrufe zu bekommen, aber keine Antworten. Ich musste sofort mit der Hierarchiestruktur über SQL arbeiten, also habe ich eine statische Hilfsklasse zusammengestellt. Ich halte das nicht für eine vollständige Lösung, aber bisher funktioniert es relativ gut. PadPath
ist hier wirklich die kritische Funktion.
public static class SQLHierarchyManipulatin {
const int DEFAULT_PAD_LEN = 3;
const char DEFAULT_PAD_CHAR = '0';
public static string PadPath(string Hierarchy) {
return PadPath (Hierarchy, DEFAULT_PAD_LEN);
}
public static string PadPath(string Hierarchy, int padLen) {
string[] components = Hierarchy.Split('/');
for (var i = 0; i < components.Length; i++ ) {
if (components[i] != "") {
components[i] = components[i].PadLeft(padLen, DEFAULT_PAD_CHAR);
}
}
return string.Join("/", components);
}
public static int CurrentNodeIndex(string Hierarchy) {
string[] components = Hierarchy.Split('/');
string startItem = components[components.Length - 2]; //one slot back from trailing slash
return int.Parse(startItem);
}
public static string ParentPath (string Hierarchy) {
return Hierarchy.Substring(0, Hierarchy.TrimEnd('/').LastIndexOf('/') + 1);
}
public static string AppendChildWithPadding (string Hierarchy, int childIndex, int padLen) {
return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
}
public static string AppendChildWithPadding (string Hierarchy, int childIndex) {
return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
}
public static string AppendChild (string Hierarchy, int childIndex) {
return AppendChild(Hierarchy, childIndex, DEFAULT_PAD_LEN);
}
public static string AppendChild (string Hierarchy, int childIndex, int padLen) {
return Hierarchy + childIndex.ToString().PadLeft(padLen, DEFAULT_PAD_CHAR) + "/";
}
}
Hoffe das hilft jemandem! Trotzdem würde ich gerne von Leuten hören.