编号 层次 上级编号(这一列是我新增的,下面的数据也是我给出的示例)
s101 1 null
s102 2 s101
s103 2 s101
s104 3 s103
s105 2 s101
s106 3
s107 4
s108 5 s107
s109 6 这是一个类树形结构,现要求根据层次求出每个节点的上级编号编号和层次2列是我从excel表中取出的数据,是按顺序取的,顺序不能乱
层次一栏可看成是 int [] grade = {1,2,2,3,2,3,4,5,6}
那么grade [1] 和grade [2]的上级编号都是grade [0]的编号,但grade [5]的上级编号是按从上到下顺序上离它最近的上级节点grade[4]的编号。
s101 1 null
s102 2 s101
s103 2 s101
s104 3 s103
s105 2 s101
s106 3
s107 4
s108 5 s107
s109 6 这是一个类树形结构,现要求根据层次求出每个节点的上级编号编号和层次2列是我从excel表中取出的数据,是按顺序取的,顺序不能乱
层次一栏可看成是 int [] grade = {1,2,2,3,2,3,4,5,6}
那么grade [1] 和grade [2]的上级编号都是grade [0]的编号,但grade [5]的上级编号是按从上到下顺序上离它最近的上级节点grade[4]的编号。
如
s101 1 null
s102 2 s101
s103 2 s101
s104 3 s103
s105 2 s101
s106 3
s107 4
s108 5 s107
s109 6
当我要 s109 6 它的上级目录是什么
s108 5 s107 它的上级目录是什么
s106 3 它的上级目录是什么
s107 4 它的上级目录是什么
说不明白就得这样弄,让人看出个规律来。
int[] grade = { 1, 2, 2, 3, 2, 3, 4, 5, 6 };
string[] parendId = new string[grade.Length];
for (int i = 0; i < grade.Length; i++)
{
if (grade[i] == 1)
{
parendId[i] = "null";
continue;
}
for (int j = i - 1; j >= 0; j--)
{
if (grade[j] == grade[i] - 1)
{
parendId[i] = Id[j];
break;
}
}
}
foreach (string s in parendId)
Console.WriteLine(s);/*
输出:
null
s101
s101
s103
s101
s105
s106
s107
s108
*/