Elegant.
Aber nicht immer ist LINQ lesbarer.
Als alter Laie würde ich es so umsetzen (dann verstehe ich es). Ist mal wieder ungetestet und funktioniert vielleicht gar nicht.
Code:
var Nodes = New List<TreeNodes>();
Nodes.Add(treeView.Nodes);
for i:=0 to DataTable.RowCount-1 do begin
{
int lv = (int)DataTable.Rows[i]["Level"];
var child = Nodes[lv].Add((string)DataTable.Rows[i]["Name"]);
if (Nodes.Count < lv)
Nodes.Add(child.Nodes);
else
Nodes[lv+1]=child.Nodes;
}
U..Und außerdem ist dein Code O(n*n). Geht gar nicht.