原始示范数据如下(只有Level的级数):ID ParentID Level
1 0 0
2 0 1
3 0 1
4 0 2
5 0 3
6 0 3
7 0 1
8 0 0
9 0 1
10 0 2
11 0 2
12 0 0
为了按ID顺序生成以下的树形结构:
0级 1级 2级 3级
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12我需要根据以上的数据中的Level,按ID顺序生成下面的ParentID:ID ParentID Level
1 0 0
2 1 1
3 1 1
4 3 2
5 4 3
6 4 3
7 1 1
8 0 0
9 8 1
10 9 2
11 9 2
12 0 0
规律是:
1,8,12为第一层等,以此类推。部分程序如下:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
//原始示例数据。
List<Data> data = new List<Data>();
data.Add(new Data { ID = 1, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 2, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 3, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 4, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 5, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 6, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 7, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 8, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 9, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 10, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 11, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 12, ParentID = 0, Level = 0, });
Format(data, 0);
foreach(var item in data)
{
//这里为生成ParentID后的数据。
}
}
void Format(List<Data> data, int Index)
{
if (Index < data.Count)
{
//在这里给ParentID赋值。
data[Index].ParentID = ...;
Format(data, Index + 1);
}
}
class Data
{
public int ID { get; set; }
public int ParentID { get; set; }
public int Level { get; set; }
}
1 0 0
2 0 1
3 0 1
4 0 2
5 0 3
6 0 3
7 0 1
8 0 0
9 0 1
10 0 2
11 0 2
12 0 0
为了按ID顺序生成以下的树形结构:
0级 1级 2级 3级
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12我需要根据以上的数据中的Level,按ID顺序生成下面的ParentID:ID ParentID Level
1 0 0
2 1 1
3 1 1
4 3 2
5 4 3
6 4 3
7 1 1
8 0 0
9 8 1
10 9 2
11 9 2
12 0 0
规律是:
1,8,12为第一层等,以此类推。部分程序如下:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
//原始示例数据。
List<Data> data = new List<Data>();
data.Add(new Data { ID = 1, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 2, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 3, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 4, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 5, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 6, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 7, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 8, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 9, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 10, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 11, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 12, ParentID = 0, Level = 0, });
Format(data, 0);
foreach(var item in data)
{
//这里为生成ParentID后的数据。
}
}
void Format(List<Data> data, int Index)
{
if (Index < data.Count)
{
//在这里给ParentID赋值。
data[Index].ParentID = ...;
Format(data, Index + 1);
}
}
class Data
{
public int ID { get; set; }
public int ParentID { get; set; }
public int Level { get; set; }
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
//原始示例数据。
List<Data> data = new List<Data>();
data.Add(new Data { ID = 1, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 2, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 3, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 4, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 5, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 6, ParentID = 0, Level = 3, });
data.Add(new Data { ID = 7, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 8, ParentID = 0, Level = 0, });
data.Add(new Data { ID = 9, ParentID = 0, Level = 1, });
data.Add(new Data { ID = 10, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 11, ParentID = 0, Level = 2, });
data.Add(new Data { ID = 12, ParentID = 0, Level = 0, });
//Format(data, 0); for(int i=1;i<data.Count;i++)
{
//这里为生成ParentID后的数据。
if (data[i].Level == data[i-1].Level + 1)
{
data[i].ParentID = data[i - 1].ID;
}
else if (data[i].Level == data[i - 1].Level)
{
data[i].ParentID = data[i - 1].ParentID;
}
else
{
data[i].ParentID = data.Take(i).LastOrDefault(x => x.Level == data[i].Level).ParentID;
} //Console.WriteLine("{0} {1} {2}", data[i].ID, data[i].ParentID, data[i].Level);
}
}class Data
{
public int ID { get; set; }
public int ParentID { get; set; }
public int Level { get; set; }
}