0

我有一本字典,其中包含另一个字典的值。

IE:

Dictionary<string, object> primaryList = new Dictionary<string, object>();
var secondaryList = primaryList.Select(x => x.Value);

我需要在secondaryList 中将值作为字典获取。我怎样才能做到这一点?

我从以下链接获得了关于反序列化 json 的集合:

将 JSON 反序列化为 C# 动态对象?

从对象中,我需要将主列表中的值解析为键值对。

4

4 回答 4

2

Dictionary<T, V>- 是一个通用集合,其中 T 或 V 也可以是 Dictionary。

接下来试试:

Dictionary<string, Dictionary<object, object>> 

代替

Dictionary<string, object>
于 2013-05-28T13:59:25.810 回答
1

如果您知道它们都是字典,那么只需将您的字典定义为

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 。

于 2013-05-28T14:02:06.837 回答
0

您可以使用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 );
于 2013-05-28T14:00:05.903 回答
0
 Dictionary<string, Dictionary<string, object>> value = new Dictionary<string,   Dictionary<string, object>>();

 Dictionary<string, object> childDictionary = value["SomeValue"];
于 2013-05-28T14:07:19.103 回答