如果我有xml:
<List>
<Item>
<Type>Type1</Type>
</Item>
<Item>
<Type>Type1</Type>
</Item>
<Item>
<Type>Type2</Type>
</Item>
</List>
我基本上想以某种方式创建一个字典或列表来重复这个。这是我到目前为止所做的:
var grouped = (from p in _xmlDoc.Descendants("Item")
group p by p.Element("Blah").Value into Items
select Items);
如何选择它以便我创建一个Dictionary<string, List<Item>>
,其中key是分组的名称和(“Type1”或“Type2”)。
答案 0 :(得分:1)
如果您不需要随机访问这些项目,请使用Lookup
,这就是它的用途:
var lookup = _xmlDoc.Descendants("Item")
.ToLookup(e => (string)e.Element("Blah"));
否则,如果您需要随机访问,请将它们放入字典中:
var dict = _xmlDoc.Descendants("Item")
.GroupBy(e => (string)e.Element("Blah"))
.ToDictionary(g => g.Key, g => g.ToList());
答案 1 :(得分:0)
XDocument document = XDocument.Parse(xml);
var query = (from item in document.Descendants("item")
select new
{
Key = (int)item.Value,
Value = (string)item.Descendants("type").Value
}).ToDictionary(pair => pair.Key, pair => pair.Value);
答案 2 :(得分:-1)
var grouped = (from p in _xmlDoc.Descendants("Item")
group p by p.Element("Blah").Value into Items
select Items).ToDictionary(g=>g.Key, g=>g.Value);
类似的东西,你必须检查正确的语法,但基本上当你按某种东西分组时,你也有Key和Value,你可以使用ToDictionary方法将它转换成字典。