我的决策树结构如下所示,
<?xml version="1.0" encoding="utf-8" ?>
<root>
outlook
<item>
sunny
<root>
humidity
<item>
high
<leaf>no</leaf>
</item>
<item>
normal
<leaf>yes</leaf>
</item>
</root>
</item>
<item>
overcast
<leaf>yes</leaf>
</item>
<item>
rain
<root>
wind
<item>
weak
<leaf>yes</leaf>
</item>
<item>
strong
<leaf>no</leaf>
</item>
</root>
</item>
</root>
我想要一个显示的LINQ查询,
Outlook : Sunny , Overcast , Rain
也就是说,root值加上树的第一级子级值。再次选择特定项目,如, 晴天
它必须迭代地给出其连续的根值和root的第一级子节点。也就是说,
Humidity : High , Normal
最后到达决定,是或否。 我正在努力,但一些输入将帮助我进一步。
答案 0 :(得分:0)
您可以尝试以下方法:
var doc = XDocument.Parse(xml);
foreach (var r in doc.Descendants("root"))
{
var values = r.Elements("item").Select(s => (s.FirstNode as XText).Value.Trim()).ToList();
string.Concat((r.FirstNode as XText).Value.Trim(), ": ", string.Join(",", values)).Dump("decision");
}
这是我得到的输出:
decision
outlook: sunny,overcast,rain
decision
humidity: high,normal
decision
wind: weak,strong
我使用了LinqPad,因此Dump方法调用将输出吐出到LinqPad控制台。希望这会有所帮助。