【问题标题】:Hierarchy from char delimited stringchar 分隔字符串的层次结构
【发布时间】:2011-12-08 04:45:15
【问题描述】:

我一直在对我的问题进行大量研究,但似乎无法提出一个好的解决方案。

问题我有一个包含以下内容的列表

a
a/b
a/b/c
a/b/c/d
a/b/f
a/1
a/2
t
t/1

我需要将其解析为可以处理父子层次结构的类。知道任何级别都可以有无限数量的孩子。

如有任何帮助,将不胜感激。

【问题讨论】:

  • 贴出“解析此数据以表示如下”的代码。
  • List myVar = new List(myString.Split(';'));
  • 最终结果应该看起来像一个树形控件,其中顶部节点将是 'a' 并且会有子 'b' 任何节点都可以有多个子节点,并且深度未知。
  • 您能指望服务中的值按任何特定顺序排列吗?
  • 顺序将始终以顶部路径为第一返回,但字符串可以包含多个顶部值,每个值都有多个子值。

标签: c# asp.net


【解决方案1】:

您输入的格式几乎与 Sql Server 层次结构中的节点路径字符串相同。以下关于解析这些问题的 StackOverflow 问题可能非常接近,如果不是你想要的。

Converting flattened hierarchical data from SQL Server into a structured JSON object with C#/Linq

【讨论】:

  • 在我的搜索中没有找到那个,因为我只在寻找 c# 和 asp.net 标签。这将像一个魅力。非常感谢。
  • 在过去的几个小时里一直在努力解决这个问题,这个示例只有在数据返回实际 ID 而我没有的数据时才有效
【解决方案2】:

很简单,只要使用String.Split:

String source = "a;a/b;a/b/c;a/b/c/d";
String[] rows = source.Split(';');
foreach(String row in rows)
    Console.WriteLine(row);

困难的部分是把它排列成一棵树。

【讨论】:

  • 我需要列表中的父子关系,该关系是在我将值拆分出“a/b/c/d”后生成的,此值对每个新路径都重复。所以假设路径'top'有2个孩子'child1',child2',这就是列表的样子,“top;top/child1;top/child2”一旦你从逗号分隔的解析它你会得到3个项目列表“top”、“top/child1”、“top/child2”,我需要将其解析为一个可以处理父子层次结构的类。知道任何级别都可以有无限数量的孩子。
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多