我有一本字典,其中包含另一个字典的值。
IE:
Dictionary<string, object> primaryList = new Dictionary<string, object>();
var secondaryList = primaryList.Select(x => x.Value);
我需要在secondaryList 中将值作为字典获取。我怎样才能做到这一点?
我从以下链接获得了关于反序列化 json 的集合:
从对象中,我需要将主列表中的值解析为键值对。
我有一本字典,其中包含另一个字典的值。
IE:
Dictionary<string, object> primaryList = new Dictionary<string, object>();
var secondaryList = primaryList.Select(x => x.Value);
我需要在secondaryList 中将值作为字典获取。我怎样才能做到这一点?
我从以下链接获得了关于反序列化 json 的集合:
从对象中,我需要将主列表中的值解析为键值对。
Dictionary<T, V>
- 是一个通用集合,其中 T 或 V 也可以是 Dictionary。
接下来试试:
Dictionary<string, Dictionary<object, object>>
代替
Dictionary<string, object>
如果您知道它们都是字典,那么只需将您的字典定义为
var primaryList = new Dictionary<string, Dictionary<key-type, value-type>>();
否则用于OfType()
过滤Values
集合。
var secondaryList = primaryList.Select(x => x.Value).OfType<Dictionary<key-type, value-type>>();
List<>
如果您实际上不Dictionary
用于进行查找,请考虑使用 a 。
您可以使用Cast()
扩展方法将集合中的对象转换为特定类型:
var secondaryList = primaryList.Select(x => x.Value)
.Cast<Dictionary<string, object>>();
如果集合中的任何对象不能强制转换为 ,这将失败并出现异常Dictionary<string, object>
。您还可以使用OfType<Dictionary<string, object>>()
仅选择属于该特定类型的那些元素。
var secondaryList = primaryList.Select(x => x.Value)
.OfType<Dictionary<string, object>>();
选择字典的子集时,可以使用ToDctionary()
扩展方法。
Dictionary<string, object> l_d = new Dictionary<string, object>();
l_d.Add( "Apple", 1 );
l_d.Add( "Access", 2 );
l_d.Add( "Barber", 3 );
l_d.Add( "Bacon", 4 );
Dictionary<string, object> l_d2 =
l_d.Where( x => x.Key.StartsWith( "A" ) )
.ToDictionary( kvp => kvp.Key, kvp => kvp.Value );
Dictionary<string, Dictionary<string, object>> value = new Dictionary<string, Dictionary<string, object>>();
Dictionary<string, object> childDictionary = value["SomeValue"];