Three layer deep malleable strings
<p>I'm trying to implement a three layer deep data structure. It is easy to do until you add the requirement of being able to move around the children and or fields, then it becomes a nightmare.    </p>

<p>Parent(Index, ID) -> Children(Index) -> Fields(Index, string) </p>

<p>So for example, the data might look like this:    </p>

<ul>
<li>Block1 ("Block1")</li>
<li><ul>
<li>Child1 </li>
</ul></li>
<li><ul>
<li><ul>
<li>Field1 ("Hello")</li>
</ul></li>
</ul></li>
<li><ul>
<li><ul>
<li>Field2 ("World") </li>
</ul></li>
</ul></li>
<li><ul>
<li>Child2 </li>
</ul></li>
<li><ul>
<li><ul>
<li>Field1 ("One")</li>
</ul></li>
</ul></li>
<li><ul>
<li><ul>
<li>Field2 ("Two") </li>
</ul></li>
</ul></li>
<li><ul>
<li><ul>
<li>Field3 ("Three") </li>
</ul></li>
</ul></li>
<li>Block2 ("Block2") </li>
<li><ul>
<li>Child1   </li>
</ul></li>
</ul>

<p>Now I can implement this by making structs containing an ArrayList and String for both the Parent and Field, and just an Arraylist for Children, but when I need to for example invert Field1 and Field2 it becomes difficult and expensive.    </p>

<p>This entire thing seems like it might be easy in a language like C++, since I could dump all the fields into a giant data block and then use pointers to reference where the fields are... Then if I want to switch fields, children, or parents, I just have to change the pointer, and it is cheap.   </p>

<p>Has anyone seen this kind of data pattern in C# before? Is there a "standard" way to implement this? </p>
