C# 带对象的树的C路径列表

C# 带对象的树的C路径列表,c#,object,tree,filelist,C#,Object,Tree,Filelist,我需要用路径列表中的对象构建一个树列表。下面的代码可以工作,但我无法从搜索函数中检索完整路径。请参阅粗体代码 public List<RestoreTreeViewModel> BuildTree(IEnumerable<string> strings) { return ( from path in strings let split = path.Split('\\') group path by path.Split('\

我需要用路径列表中的对象构建一个树列表。下面的代码可以工作,但我无法从搜索函数中检索完整路径。请参阅粗体代码

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();
}

这能起作用吗?或者我应该研究另一种从路径列表构建树的方法吗?

您需要向BuildTree方法添加一个列表参数,然后向该列表追加或预先添加项,以便最终结果将包含路径中的所有项


还有其他方法,但如果我理解您的意图,这似乎是直截了当的。

谢谢您的回复。我需要的是将路径字符串放入select块,因为我需要作为列表循环的一部分填充完整路径字符串。公共列表BuildTreeEnumerable strings{return from path in strings let split=path。按路径拆分“\\\”组路径。将“\\\”[0]拆分为g select new RestoreTreeViewModel{Name=g.Key,Fullpath=path;Nodetype=2,CanReference=true,Children=BuildTree from s in g其中s.Length>g.Key.Length+1选择s.Substringg.Key.Length+1}.ToList;}