【发布时间】:2013-11-04 23:08:32
【问题描述】:
我有这样的字典
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);
我正在使用“使用 System.Linq;”并且 Key 和 Value 无法识别。当我在 x 或 y 之后写点时。助手向我展示了对象 MyObject 的属性。
【问题讨论】:
-
你不能,你只有值,而不是键。您需要修复您的事件,以便它通过 IDictionary 或
IEnumerable<MyStructure, MyObject>代替。还要考虑这是否有必要,当您还通过发送方的属性或 GetXxx() 方法公开字典时,就不需要了。事件通常应仅传递仅在引发事件的特定时刻有效且无法通过其他方式合理获取的数据。传递字典是一种代码异味,事件接收器存储过时数据副本的可能性太大。
标签: c# dictionary ienumerable converters