【问题标题】:Fill Keys and values of a Dictionary<K, V> using arrays in C#使用 C# 中的数组填充 Dictionary<K, V> 的键和值
【发布时间】:2011-05-09 11:24:34
【问题描述】:

我有两个大小相同的数组,arrayKeysarrayValues 分别填充了 Keys 和 Values 的数据,以及一个空的 Dictionary&lt;K, V&gt;(myDictionary强>)。我想将每个数组中的元素分配为字典的键和值。我知道这可以通过使用以下代码来完成:

for(i=0:i<arrayKeys.Lenght;i++)
{
   myDictionary.Add(arrayKeys[i], arrayValue[i]);
}

但我想知道是否有任何方法可以执行以下分配:

myDictionary.Keys = arrayKeys;
myDictionary.Values = arrayValues;

也许通过使用带有 ToDictionary 方法的 lambdas。提前致谢

弗朗西斯科

【问题讨论】:

  • myDictionary.Keys, myDictionary.Values 只是吸气剂,因此您无法将其分配给某个值。
  • @Abdul Muqtadir:我使用这些说明只是为了说明我想做什么

标签: c# dictionary variable-assignment


【解决方案1】:

你可以写

myDictionary = keys.Zip(values, (k, v) => new { k, v })
                   .ToDictionary(o => o.k, o => o.v);

【讨论】:

  • +1 - Zip 仅适用于 .NET 4
  • 感谢您的回答。我的目标是 .NET 4,所以使用 Zip 没问题。不知道这个方法,真的好用又简洁
【解决方案2】:

您不能直接分配它们,但可以使用以下变体:

var myDict = arrayKeys.Select((item, i) => new { Key = item, Value = arrayValues[i] })
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

【讨论】:

    【解决方案3】:

    不,你不能那样做。

    由于Dictionary 的工作方式,您必须同时插入每个KeyValuePair&lt;K, V&gt;(因为值的位置由键的哈希确定)。

    【讨论】:

    • 我使用这些说明只是为了说明我想做什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2012-08-26
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多