我正在编写一个程序来解析一些第三方XML文件。这种结构就像…
<CharacterSheet>
...
<StatBlock>
...
<Stat>
...
<alias />
...
</Stat>
...
</StatBlock>
...
</CharacterSheet>
我在中使用它来练习LINQ,最后我必须编写一些非常难看的链接查询来得到我想要的,一个统计数据列表和它们的所有别名。
var CharSheet = from i in character.Elements()
where i.Name == "CharacterSheet"
select i;
var StatBlocks = from sheet in CharSheet
from statBlock in sheet.Elements()
where statBlock.Name == "StatBlock"
select statBlock;
var stats = from statBlock in StatBlocks
from stat in statBlock.Elements()
select stat;
var statAliases = from stat in stats
from alias in stat.Elements()
where alias.Name == "alias"
select new { stat, alias };
我意识到我可以用“into”把它变成一个很长的查询(这是我最初的查询方式),但这使得它更加密集和难以处理。
似乎有一个更简单的方法来做我想做的事情。