Как конвертировать 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, вы не можете вызвать их. Коллекция всех значений - это просто коллекция этого типа.