我有一个嵌套集合,我想在循环解析到嵌套集合之前遍历父集合中的每个元素,
到目前为止我所尝试的是,
Private void Loop( PreviewObject po )
{
Console.Writeline(po.Name) ;
foreach (PreviewObject child in po.Childrens)
Loop( child);
}
预览对象类
public class PreviewObject
{
private string _name;
public string Name { get { return _name; } set { _name = value; } }
private List<PreviewObject> _childrens = new List<PreviewObject>();
public List<PreviewObject> Childrens
{
get { return _childrens; }
set { _childrens = value; }
}
}
问题是循环是这样的
假设 X 是一个集合,并且 X 有元素 X ,这意味着一个嵌套集合
X 第一个元素是 A,X 第二个元素是 B,X 的第一个元素的集合的第一个元素是 C
如果我将此作为我的代码循环,我会得到以下结果,
交流X
我想要得到的是,
甲乙丙
_
A 和 B 都是父集合的元素所以我想先循环遍历所有父元素,循环遍历元素内部的父元素集合
谁能帮我实现这一目标?
我尝试了以下代码,但它也给了我相同的结果
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections ;
namespace Breadth_first_traversal
{
class Program
{
public static void Main(string[] args)
{
list a = new list();
a.name = "A";
list b = new list();
b.name = "B";
list c = new list();
c.name = "C";
list d = new list();
d.name = "d";
list parent = new list();
parent.name = "Parent";
parent.Childrens.Add(a);
parent.Childrens.Add(b);
a.Childrens.Add(c);
b.Childrens.Add(d);
Loop(a);
Console.ReadKey();
}
private static void Loop(list po)
{
Queue<list> queue = new Queue<list>();
queue.Enqueue(po);
while (queue.Count != 0)
{
list next = queue.Dequeue();
foreach (list obj in next.Childrens)
queue.Enqueue(obj);
// Replace with the actual processing you need to do on the item
Console.WriteLine(next.name);
}
}
public class list
{
public string _name;
public string name { get { return _name; } set { _name = value; } }
private List<list> childrens = new List<list>();
public List<list> Childrens { get { return childrens ; } set {childrens = value ; } }
}
}
}
我通过上面的代码得到的结果是
交流电
但我必须得到的是
A B C D
因为首先将父集合的所有元素写入控制台,然后将父集合元素的集合写入控制台
有人可以用一个很好的代码示例来回答吗?