假设我有一张表格如下:
D_ID C_ID B_ID A_ID
1D 1C 1B 1A
4D 2C 6B 1A
6D 1C 1B 1A
9D 1C 1B 1A
8D 2C 6B 1A
让我们说从结构上讲,我知道以下内容:
A's
B's
C's
D's
这就是D的孩子,B的C,等等。
如何将表格顶部转换为分层数据源? 如
ID ParentID
1D 1C
4D 2C
6D 1C
9D 1C
8D 2C
1C 1B
2C 6B
1B 1A
6B 1A
1A Null
这可以作为Telerik TreeView或其他分层控件的分层数据源吗? 我知道我可以迭代每个项目并自己构建它,但我想知道是否有更好的已知方法来迭代这个。也许甚至是一种内置的方式来实现这一点。
答案 0 :(得分:2)
您可以编写一个简单的迭代来传递文件并将一对元素添加到字典中。在pythonish看psuedo代码:
// open the file you want to parse.
file = open(my_log_file)
// create a hash map from ID to parent.
dictionary = {}
// read through the file line by line
for line in file.getlines():
// ignore first line ...
// read the 4 columns in each line
columns[] = line.split(" ")
// add pairs (id=column[i], parent=column[i+1]) to the hashmap
dictionary[column[1]] = column[2]
dictionary[column[2]] = column[3]
dictionary[column[3]] = column[4]
dictionary[column[4]] = Nil
// output the hashmap line by line.
print "ID", "Parent ID"
for (id, parent) in dictionary:
print id, parent
我希望这会有所帮助。
答案 1 :(得分:1)
这是一个快速思考....
如果我理解正确,你可以从右到左遍历列表,并读取对...使用字典/ map / hashtable来保持它们的有序性。您可能需要为它定义一个自定义比较器,但这并不太难。
因此,当您从右到左,从上到下进行迭代时,您可以在阅读时添加对..
parent = "1A";
child = "1B";
list.add(child, parent);
//Then on the next iteration.....
parent = "1B";
child = "1C";
等等你去......
这样使用子项作为键,您将获得所有唯一值的列表,这将成为您的ID列。
然后您的list.values()成为您的ParentID列,因为它将包含具有多个子项的所有父项的重复项。这也是孩子完美地成为关键的原因,因为你只能生一次,但你可以有很多孩子。
编辑:BAH!有人用我提出的更完整版本打败了我...哦,好吧。我更喜欢我的口头描述;)