Как конвертировать IEnumerable в словарь

У меня словарь такой

Dictionary<MyStructure, MyObject>

MyStructure означает публичную структуру... MyObject означает конкретную сущность...

Затем через события я передаю свой словарь как

IEnumerable<MyObject> col = this.GetCollection().Values;

Затем, когда я управляю своим событием, я использую свой IEnumerable, но я хочу преобразовать его в прежний словарь, чтобы получить доступ к его свойствам, но я не могу это сделать. Я пытаюсь это

        Dictionary<MyStructure, MyObject> dict =
            args.MyObjectCollection.ToDictionary(x => x.Key, y => y.Value);

Я использую "using System.Linq;" и ключ и значение не распознаются. Когда я пишу точку после х или у. Помощник показывает мне свойства объекта MyObject.

2 ответа

Решение

Когда вы делаете IEnumerable, вы теряете ключи MyStructure... Если вы знаете способ создания соответствующей структуры из экземпляров MyObject, то вы можете решить эту проблему...

MyObjectCollection.ToDictionary(x=>makeStructFromMyObject(x), x=>x);


//... with...

private MyStruct makeStructFromMyObject(MyObject obj)
{
   //to be implemented by you
}

если вы ищете альтернативу... передать весь словарь от того места, где он до сих пор имеет исходные данные

Если ваша коллекция не является коллекцией KeyValuePairs или каким-либо другим типом со свойствами Key и Value, вы не можете вызвать их. Коллекция всех значений - это просто коллекция этого типа.

Другие вопросы по тегам