我有一个像
这样的xml文件<Root>
<Child val1="1" Val2="0"/>
<Child val1="1" Val2="2"/>
<Child val1="1" Val2="3"/>
<Child val1="1" Val2="4"/>
<Child val1="1" Val2="5"/>
<Child val1="6" Val2="0"/>
<Child val1="7" Val2="0"/>
</Root>
我需要将数据存储在任何临时存储(即Dictionary
)中以进行某种操作。但我不能在这里使用dictionary
,因为字典不支持相同的键。任何人都可以建议我更好地存储这些数据吗?
答案 0 :(得分:2)
好吧,您可以使用Dictionary<int, List<int>>
- 或仅用于存储(无更改),您可以使用LINQ的ToLookup
方法,它将非常轻松地为您构建多值地图。类似的东西(使用LINQ to XML):
var lookup = doc.Descendants("Child")
.ToLookup(x => (int) x.Attribute("val1"),
x => (int) x.Attribute("val2"));
// Will iterate 5 times, printing 0, 2, 3, 4, 5
foreach (var value in lookup[1])
{
Console.WriteLine(value);
}
编辑:要显示所有信息,您可以执行以下操作:
foreach (var grouping in lookup)
{
foreach (var value in grouping)
{
Console.WriteLine("{0} {1}", grouping.Key, value);
}
}
答案 1 :(得分:1)
如果是.NET 4.0,您可以使用Tuple<int, int>和List&lt; Tuple&lt; int,int&gt;&gt;如果数据不是键值对
答案 2 :(得分:0)
你仍然可以使用字典作为val1值,只需将第二个值作为值列表而不仅仅是列表。然后只需检查DataKey是否存在,如果它确实执行了list.Add(val2)