Заполните ключи и значения словаряиспользуя массивы в C # - PullRequest
3 голосов
/ 09 мая 2011

У меня есть два массива одинакового размера: arrayKeys и arrayValues ​​, заполненные данными соответственно для ключей и значений, и пустой Dictionary<K, V> ( myDictionary ),Я хотел бы назначить в качестве ключей и значений словаря элементы в каждом массиве.Я знаю, что это можно сделать с помощью следующего кода:

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

, но я хотел бы знать, есть ли способ выполнить назначение следующим образом:

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

возможноиспользуя лямбды с методом ToDictionary.Заранее спасибо

Франческо

Ответы [ 3 ]

4 голосов
/ 09 мая 2011

Вы можете написать

myDictionary = keys.Zip(values, (k, v) => new { k, v })
                   .ToDictionary(o => o.k, o => o.v);
4 голосов
/ 09 мая 2011

Вы не можете назначить их напрямую, но вы можете использовать несколько вариантов:

var myDict = arrayKeys.Select((item, i) => new { Key = item, Value = arrayValues[i] })
    .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
0 голосов
/ 09 мая 2011

Нет, вы не можете этого сделать.

Из-за способа, которым работает Dictionary, вы должны вставлять каждый KeyValuePair<K, V> одновременно (поскольку местоположение значения определяется хэшемключа).

...