我试图创建一个返回类似的嵌套列表。
我创建了一个基础类:
public class MyClass
{
public string Name { get; set; }
public MyClass(string name)
{
Name = name;
}
}
我创建了我的方法来设置我的默认嵌套列表:
public List<MyClass> CreateList()
{
List<List<List<string>>> MyList = new List<List<List<string>>>
{ new List<List<string>> {new List<string> {"A"}, new
List<string> {"B", "C", "D", "E"}},
new List<List<string>> {new List<string> {"F"}, new
List<string> {"G", "H"}},
};
var a = MyList.SelectMany(x => x).Distinct().ToList();
var b = a.SelectMany(x => x).Distinct().ToList();
List<MyClass> abc= b.Cast<MyClass>().ToList();
return abc;
}
我知道这个列表没有正确设置但是这个演员也不行。如何正确设置此列表并正确投射?我必须从我的方法返回一个列表,数组或IEnumerable。
答案 0 :(得分:2)
如果您想为您的对象获取树状结构,您可以通过添加&#34; Children&#34;属于你的班级。我建议使用List<T>
:
public class MyClass
{
public string Name { get; set; }
public List<MyClass> Children { get; set; }
public MyClass(string name)
{
Children = new List<MyClass>();
Name = name;
}
//Added a new constructor so we can pass an IEnumerable of children on creation
public MyClass(string name, IEnumerable<MyClass> children)
{
Children = new List<MyClass>(children);
Name = name;
}
}
然后制作你想要的嵌套列表:
var myList = new List<MyClass>()
{
new MyClass("A", new []
{
new MyClass("B"),
new MyClass("C"),
}),
new MyClass("D", new []
{
new MyClass("E")
})
};
结果将是一个在集合中使用时可以具有层次结构的类。你的&#34;顶级&#34;将是MyClass
的集合(列表,数组等)。然后该集合中的每个项目都有自己的子项,可以有自己的子项等等。
小提琴here