【发布时间】:2019-12-17 11:44:57
【问题描述】:
我在将以下字符串数组转换为 POCO 对象时遇到问题。 鉴于以下内容:
string files = [
"./Folder/file.ext",
"./Folder/file2.ext",
"./Folder/file3.ext",
"./Folder/nestedfolder/file.ext",
"./Folder2/file1.ext",
"./Folder2/file2.ext",
"./file1.ext",
"./file2.ext",
"./file3.ext",
];
我想把它转换成类似的东西:
public class HierarchicalSource{
public List<HierarchicalSource> Children = new List <HierarchicalSource> ();
public bool folder { get; set; }
public string FullPath;
public HierarchicalSourceSource(string path) {
this.FullPath = path;
}
}
其中 HierarchicalSource 是根,并且有一个子列表
更新:
我最终将列表更改为字典。必须有更有效的方法来做到这一点,但我做了如下:
string fileList = files.Select(x => x.Remove(0, 2)).ToArray();
var root = new HierarchicalSource("root");
foreach(var f in fileList){
var current = root;
string[] splitFile = f.Split('/');
foreach(var s in splitFile){
if(!current.Children.ContainsKey(s)){
current.Children.Add(s, new List<HierarchicalSource>{ new HierarchicalSource(s) });
}
current = current.Children[s].Last();
}
}
POCO:
public class HierarchicalSource{
public string name;
public Dictionary<string, List<HierarchicalSource>> Children = new Dictionary<string, List<HierarchicalSource>>();
public HierarchicalSource(string name){
this.name = name;
}
}
【问题讨论】:
-
所以....,向我们展示您的尝试。提示:拆分
/上的字符串并迭代返回的数组。寻找孩子。如果不存在,添加它。 -
你认为也许你可以验证你的 c# 代码吗?