C# 将项目分组到父项->;儿童->;外孙关系
我的课程如下:C# 将项目分组到父项->;儿童->;外孙关系,c#,.net,linq,c#-3.0,C#,.net,Linq,C# 3.0,我的课程如下: public class Item { public int ItemID { get; set; } public int GroupLevel { get; set; } public string ItemName { get; set; } public string ItemDesc { get; set; } } 这将返回一个展平IEnumerable结果,但我需要根据GroupLeve
public class Item
{
public int ItemID { get; set; }
public int GroupLevel { get; set; }
public string ItemName { get; set; }
public string ItemDesc { get; set; }
}
这将返回一个展平IEnumerable结果,但我需要根据GroupLevel和ItemID将它们分组到父->子->孙子关系中。以下是当前数据的外观:
ItemID: 1
GroupLevel: 1
ItemName: All Groups
ItemDesc: Item 1 description
ParentID: null
ItemID: 2
GroupLevel: 2
ItemName: Boulder
ItemDesc: Boulder description
ParentID: 1
ItemID: 3
GroupLevel: 2
ItemName: Atlanta
ItemDesc: Atlanta description
ParentID: 1
ItemID: 4
GroupLevel: 3
ItemName: Boulder - Boulder south
ItemDesc: Grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 5
GroupLevel: 3
ItemName: Boulder - Boulder North
ItemDesc: Another grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 6
GroupLevel: 3
ItemName: Atlanta - West
ItemDesc: Grand-child of Atlanta (ID: 3)
ParentID: 3
我希望数据的结构如下:
ItemID: 1
GroupLevel: 1
ItemName: All Groups
ItemDesc: Item 1 description
ParentID: null
ItemID: 2
GroupLevel: 2
ItemName: Boulder
ItemDesc: Boulder description
ParentID: 1
ItemID: 4
GroupLevel: 3
ItemName: Boulder - Boulder south
ItemDesc: Grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 5
GroupLevel: 3
ItemName: Boulder - Boulder North
ItemDesc: Another grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 3
GroupLevel: 2
ItemName: Atlanta
ItemDesc: Atlanta description
ParentID: 1
ItemID: 6
GroupLevel: 3
ItemName: Atlanta - West
ItemDesc: Grand-child of Atlanta (ID: 3)
ParentID: 3
List<Item> itemlist;
List<Item> newItemList;
public void main()
{
//Find all root items (aka, no parents)
foreach (Item item in itemlist)
{
if (item.Parent == null) getObjects(item.ID, 0);
}
}
public void getObjects(Item me, int deep)
{
//Store node
Console.WriteLine("this is me: " + me.ID);
Console.WriteLine("I am this many levels deep: " + deep);
newItemList.Insert(me);
//Find my children
foreach (Item item in itemlist)
{
if (item.Parent == me.ID) getObjects(item.ID, (deep + 1));
}
}
有什么建议吗?谢谢。你的意思是这样的:
ItemID: 1
GroupLevel: 1
ItemName: All Groups
ItemDesc: Item 1 description
ParentID: null
ItemID: 2
GroupLevel: 2
ItemName: Boulder
ItemDesc: Boulder description
ParentID: 1
ItemID: 4
GroupLevel: 3
ItemName: Boulder - Boulder south
ItemDesc: Grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 5
GroupLevel: 3
ItemName: Boulder - Boulder North
ItemDesc: Another grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 3
GroupLevel: 2
ItemName: Atlanta
ItemDesc: Atlanta description
ParentID: 1
ItemID: 6
GroupLevel: 3
ItemName: Atlanta - West
ItemDesc: Grand-child of Atlanta (ID: 3)
ParentID: 3
List<Item> itemlist;
List<Item> newItemList;
public void main()
{
//Find all root items (aka, no parents)
foreach (Item item in itemlist)
{
if (item.Parent == null) getObjects(item.ID, 0);
}
}
public void getObjects(Item me, int deep)
{
//Store node
Console.WriteLine("this is me: " + me.ID);
Console.WriteLine("I am this many levels deep: " + deep);
newItemList.Insert(me);
//Find my children
foreach (Item item in itemlist)
{
if (item.Parent == me.ID) getObjects(item.ID, (deep + 1));
}
}
列表项列表;
列出新项目列表;
公共图书馆
{
//查找所有根项目(又名,无父项)
foreach(项目列表中的项目)
{
如果(item.Parent==null)getObjects(item.ID,0);
}
}
public void getObjects(Item me,int deep)
{
//存储节点
Console.WriteLine(“这是我:+me.ID”);
WriteLine(“我有这么多层次的深度:“+deep”);
新项目列表。插入(我);
//找到我的孩子
foreach(项目列表中的项目)
{
if(item.Parent==me.ID)getObjects(item.ID,(deep+1));
}
}
你的意思是这样的吗:
ItemID: 1
GroupLevel: 1
ItemName: All Groups
ItemDesc: Item 1 description
ParentID: null
ItemID: 2
GroupLevel: 2
ItemName: Boulder
ItemDesc: Boulder description
ParentID: 1
ItemID: 4
GroupLevel: 3
ItemName: Boulder - Boulder south
ItemDesc: Grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 5
GroupLevel: 3
ItemName: Boulder - Boulder North
ItemDesc: Another grand-child of Boulder (ID: 2)
ParentID: 2
ItemID: 3
GroupLevel: 2
ItemName: Atlanta
ItemDesc: Atlanta description
ParentID: 1
ItemID: 6
GroupLevel: 3
ItemName: Atlanta - West
ItemDesc: Grand-child of Atlanta (ID: 3)
ParentID: 3
List<Item> itemlist;
List<Item> newItemList;
public void main()
{
//Find all root items (aka, no parents)
foreach (Item item in itemlist)
{
if (item.Parent == null) getObjects(item.ID, 0);
}
}
public void getObjects(Item me, int deep)
{
//Store node
Console.WriteLine("this is me: " + me.ID);
Console.WriteLine("I am this many levels deep: " + deep);
newItemList.Insert(me);
//Find my children
foreach (Item item in itemlist)
{
if (item.Parent == me.ID) getObjects(item.ID, (deep + 1));
}
}
列表项列表;
列出新项目列表;
公共图书馆
{
//查找所有根项目(又名,无父项)
foreach(项目列表中的项目)
{
如果(item.Parent==null)getObjects(item.ID,0);
}
}
public void getObjects(Item me,int deep)
{
//存储节点
Console.WriteLine(“这是我:+me.ID”);
WriteLine(“我有这么多层次的深度:“+deep”);
新项目列表。插入(我);
//找到我的孩子
foreach(项目列表中的项目)
{
if(item.Parent==me.ID)getObjects(item.ID,(deep+1));
}
}
我认为这对您很有用
您可以阅读示例,并根据需要创建父->子->孙子关系树……我认为这对您很有用 您可以阅读示例,并根据需要创建父->子->孙子关系树