int j = 0;
foreach (var e in XmlData.Elements())
{
xDictionary.Add(j++, e.Value);
}
答案 0 :(得分:4)
如果键只是位置索引,则可能不应该使用字典。我建议改用一个列表:
var xList = XmlData.Elements().ToList();
答案 1 :(得分:2)
嗯,这样做会使用the overload of Select
which provides the index和ToDictionary
:
var dictionary = XmlData.Elements()
.Select((value, index) => new { value, index })
.ToDictionary(x => x.index, x => x.value);
假设xDictionary
在你开始之前是空的。
答案 2 :(得分:1)
像这样:创建一个新词典:
var dict = XmlData.Elements()
.Select((e, i) => new {Element = e, Index = i})
.ToDictionary(p => p.Index, p => p.Element.Value);
此外,如果您想要添加到现有词典,您可以使用AddRange
便利扩展方法:
xDictionary.AddRange(XmlData.Elements()
.Select((e, i) => new KeyValuePair<int, string>(i, e.Value)));
扩展方法实现:
public static void AddRange<T>(this ICollection<T> source, IEnumerable<T> elements)
{
foreach (T element in elements)
{
source.Add(element);
}
}