2011-05-09 52 views
3

我有兩個相等大小的陣列,arrayKeysarrayValues分別填充有數據,鍵和值,和一個空Dictionary<K, V>myDictionary)。我想將字典的鍵和值分配給每個數組中的元素。我知道,這可以通過使用下面的代碼來完成:填充一個字典<K, V>使用數組的鍵和值在C#

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

,但我想知道是否有什麼辦法如下進行分配:

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

可能通過使用lambda表達式與ToDictionary方法。在此先感謝

弗朗西斯

+1

myDictionary.Keys,myDictionary.Values只是干將,所以你不能把它分配給了一些價值。 – 2011-05-09 11:29:51

+0

@Abdul Muqtadir:我用這些說明只是爲了說明我想做什麼 – CiccioMiami 2011-05-09 11:33:51

回答

4

你可以寫

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

+1 - [Zip](http://msdn.microsoft.com/zh-cn/library/dd267698.aspx)僅限於.NET 4,儘管 – Rup 2011-05-09 11:30:45

+0

感謝您的回答。我的目標是.NET 4,所以使用Zip是沒有問題的。我不知道這個方法,真的有用和簡潔 – CiccioMiami 2011-05-09 11:41:40

4

你不能直接給他們,但你可以使用一些變種:

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

感謝您的回答。 – CiccioMiami 2011-05-09 11:41:10

0

不,你不能這樣做。

由於Dictionary的工作原理,您必須同時插入每個KeyValuePair<K, V>(因爲值的位置由密鑰的散列確定)。

+0

我使用這些說明只是爲了說明我想做什麼 – CiccioMiami 2011-05-09 11:34:19