2 回答
TA贡献1841条经验 获得超3个赞
你写了:
我想要做的就是在没有 foreach 的情况下初始化字典
您想用 中的值替换indices字典中的值source吗?使用Enumerable.ToDictionary
indices = (KeyValuePair<string, int>)source // regard the items in the dictionary as KeyValuePairs
.ToDictionary(pair => pair.Key, // the key is the key from original dictionary
pair => pair.Value); // the value is the value from the original
或者您想将 source 中的值添加到 中已经存在的值中indices?如果你不想在foreach你必须从两个字典,并采取当前值的毗连他们从源的值。然后使用 ToDictionary 创建一个新的 Dictionary。
indices = (KeyValuePair<string, int>) indices
.Concat(KeyValuePair<string, int>) source)
.ToDictionary(... etc)
然而,这将浪费处理能力。
考虑为 Dictionary 创建扩展函数。请参阅揭开扩展方法的神秘面纱
public static Dictionary<TKey, TValue> Copy>Tkey, TValue>(
this Dictionary<TKey, TValue> source)
{
return source.ToDictionary(x => x.Key, x => x.Value);
}
public static void AddRange<TKey, TValue>(
this Dictionary<TKey, TValue> destination,
Dictionary<TKey, TValue> source)
{
foreach (var keyValuePair in source)
{
destination.Add(keyValuePair.Key, keyValuePair.Value);
// TODO: decide what to do if Key already in Destination
}
}
用法:
// initialize:
var indices = source.Copy();
// add values:
indices.AddRange(otherDictionary);
- 2 回答
- 0 关注
- 115 浏览
添加回答
举报