作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个这样的路径列表:
Root
Root/Folder1
Root/Folder1/SubFolder1.1
Root/Folder1/SubFolder1.2
Root/Folder2
OtherRootFolder
OtherRootFolder/Folder1
我需要使用文件夹 + 子列表创建层次结构
public class FolderTreeModel
{
public string Title { get; set; }
public List<FolderTreeModel> Children { get; set; }
}
如何将该路径拆分为该结构以使其看起来像:
Root
'-- Folder1
'---- SubFolder1.1
'---- SubFolder1.2
'-- Folder2
'-- OtherRootFolder
'---- Folder1
提前致谢。
最佳答案
这是您需要的代码:
Action<FolderTreeModel, IEnumerable<string>> ensureExists = null;
ensureExists = (ftm, ts) =>
{
if (ts.Any())
{
var title = ts.First();
var child = ftm.Children.Where(x => x.Title == title).SingleOrDefault();
if (child == null)
{
child = new FolderTreeModel()
{
Title = title,
Children = new List<FolderTreeModel>(),
};
ftm.Children.Add(child);
}
ensureExists(child, ts.Skip(1));
}
};
然后我可以这样做:
var paths = new []
{
"Root",
"Root/Folder1",
"Root/Folder1/SubFolder1.1",
"Root/Folder1/SubFolder1.2",
"Root/Folder2",
"OtherRootFolder",
"OtherRootFolder/Folder1",
};
var root = new FolderTreeModel() { Title = "/", Children = new List<FolderTreeModel>() };
foreach (var path in paths)
{
var parts = path.Split('/');
ensureExists(root, parts);
}
然后我得到这个结果:
如果将 FolderTreeModel
的定义更改为:
public class FolderTreeModel : List<FolderTreeModel>
{
public string Title { get; set; }
}
...然后代码变得更简单一些:
Action<FolderTreeModel, IEnumerable<string>> ensureExists = null;
ensureExists = (ftm, ts) =>
{
if (ts.Any())
{
var title = ts.First();
var child = ftm.Where(x => x.Title == title).SingleOrDefault();
if (child == null)
{
child = new FolderTreeModel() { Title = title };
ftm.Add(child);
}
ensureExists(child, ts.Skip(1));
}
};
var root = new FolderTreeModel() { Title = "/" };
其余代码相同。
关于c# - 层次结构路径列表<string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34947623/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!