C#路径列表转换为对象树

3

我需要使用路径列表中的对象构建树形列表。下面的代码可以工作,但是我无法从搜索函数中检索完整路径。请注意加粗的代码...

public List<RestoreTreeViewModel> BuildTree(IEnumerable<string> strings)
{
    return (
      from path in strings
      let split = path.Split('\\')
      group path by path.Split('\\')[0] into g
      select new RestoreTreeViewModel()
      {
          Name = g.Key,
          Nodetype = 2,
          CanReference = true,
          **FullPath = path;**
          Children = BuildTree(            
            from s in g
            where s.Length > g.Key.Length + 1
            select s.Substring(g.Key.Length + 1)) 
      }
      ).ToList();
}

这个能行吗,还是我应该探索另一种从路径列表构建树的方法?

public List<RestoreTreeViewModel> BuildTree(IEnumerable<string> strings) { return ( from path in strings let split = path.Split('\') group path by path.Split('\')[0] into g select new RestoreTreeViewModel() { Name = g.Key, Fullpath = path; Nodetype = 2, CanReference = true, Children = BuildTree(
from s in g where s.Length > g.Key.Length + 1 select s.Substring(g.Key.Length + 1)) } ).ToList(); }
- user1789782
1个回答

1

你需要在BuildTree()方法中添加一个列表参数,然后将项目附加(或前置)到该列表中,以便最终结果包含路径中的所有项目。

还有其他方法可以解决这个问题,但如果我理解你想做什么,那似乎很直接。


谢谢您的回复。我需要将“路径”字符串放入选择块中,因为我需要在列表循环的一部分中填充完整路径字符串。 - user1789782

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接