int j = 0;
foreach (var e in XmlData.Elements())
{
xDictionary.Add(j++, e.Value);
}
如果键仅是位置索引,您可能不应该使用字典。我建议改用列表:
var xList = XmlData.Elements().ToList();
好的,可以使用 提供索引的Select
重载和 ToDictionary
来实现这个功能:
var dictionary = XmlData.Elements()
.Select((value, index) => new { value, index })
.ToDictionary(x => x.index, x => x.value);
xDictionary
是空的。类似这样:创建一个新的字典:
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);
}
}
xDictionary
是一个已经存在并包含一些项的字典,还是它总是为空(即你需要从头开始构建它)?如果它已经存在,那么 LINQ 并不是你应该在这里使用的工具。 - Jeff Mercado