2012-02-08 2 views
0

У меня есть следующий код. Он использует класс, созданный для управления определенным типом файла, называемым plist. Я пытаюсь взять то, что он выплевывает, и помещать в словарь.Как включить этот тип в словарь?

Dictionary<string, IPropertyListDictionary> maindict = new Dictionary<string, IPropertyListDictionary>(); 
maindict = data["section0"].DictionaryItems; 

Проблема заключается в том, что я получаю красную линию под «DictionaryItems» со следующей ошибкой:

Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string,CodeTitans.Core.Generics.IPropertyListItem>>' 
to 
'System.Collections.Generic.Dictionary<string,CodeTitans.Core.Generics.IPropertyListDictionary>'. 
An explicit conversion exists (are you missing a cast?) 

Может кто-нибудь помочь мне правильно бросить это? Благодарю.

+0

http://stackoverflow.com/questions/2636603/recreating-a-dictionary-from-an-ienumerable –

+0

+1 для размещения точное сообщение об ошибке. – Marlon

ответ

4

Попробуйте использовать этот

Dictionary<string, IPropertyListDictionary> maindict = (data["section0"].DictionaryItems).ToDictionary(x => x.Key, x => x.Value); 
+4

Вы создаете новый экземпляр словаря в своей первой строке без всякой причины. Это должно быть просто «Словарь <строка, IPropertyListDictionary> maindict = (data [" section0 "]. DictionaryItems) .ToDictionary (x => x.Key, x => x.Value); ' –

+0

Это, кажется, работает. Спасибо, Лестер. –

-2

Вы не можете бросить его, но вы можете преобразовать его, написав свой собственный цикл или с использованием метода расширения ToDictionary() в Linq.

using System.Collections.Generic; 
using System.Linq; 

// ... 
Dictionary<string, IPropertyListDictionary> mainDictionary = data["section0"].DictionaryItems.ToDictionary(); 
Смежные вопросы