C# 如何在IDictionary中存储多个项目?

C# 如何在IDictionary中存储多个项目?,c#,C#,我有这个IDictionary声明:IDictionary跟踪 在它里面,我想保存一个json反序列化返回的元素列表,实际上我是这样做的: var obj = JsonConvert.DeserializeObject<List<RootObject>>(responseText); foreach (var item in obj) { trace["date"] = item.trace.details.date; trace["type"] =

我有这个
IDictionary
声明:
IDictionary跟踪

在它里面,我想保存一个json反序列化返回的元素列表,实际上我是这样做的:

var obj = JsonConvert.DeserializeObject<List<RootObject>>(responseText);

foreach (var item in obj)
{
    trace["date"] = item.trace.details.date; 
    trace["type"] = item.trace.details.type;

    foreach (var trace in item.trace.context.context)
    {
          trace["context"] = JsonConvert.SerializeObject(trace);
    }
}
var obj=JsonConvert.DeserializeObject(responseText);
foreach(obj中的var项目)
{
跟踪[“日期”]=item.trace.details.date;
跟踪[“类型”]=item.trace.details.type;
foreach(item.trace.context.context中的变量跟踪)
{
trace[“context”]=JsonConvert.SerializeObject(跟踪);
}
}
现在,该代码运行良好,但只保存迭代的最后一项,这是因为当我迭代该项时,
日期、类型等都会被替换,
,但我希望存储该项,而不是在每次新迭代中替换它。
如何使用
IDictionary


注意:
trace.x
是反序列化json的类的名称。


进一步的问题:也许使用IDictionary不是实现这一目标的好主意

看起来你最好使用一个专门的类,比如:

public class TraceInfo
{
    public string Date { get; set; }
    public string Type { get; set; }
    public List<string> ContextItems { get; set; }
}
公共类跟踪信息
{
公共字符串日期{get;set;}
公共字符串类型{get;set;}
公共列表ContextItems{get;set;}
}
然后,对于
obj
中的每个值,使用
new TraceInfo()
创建一个
TraceInfo
对象并设置其属性


然后,您可以将它们存储在
列表
字典
中,选择权归您。

您可能会发现
查找
是另一种
https://msdn.microsoft.com/en-us/library/bb460184(v=vs.110).aspx
您需要为每个
项目
以及每个
跟踪
使用唯一键。或者您可以改为执行
IDictionary
。或者真正创建一个自定义类,该类具有日期和类型参数以及作为列表的上下文,并将其用作字典值类型。@juharr我已经尝试过使用它,但我得到了以下消息:在
System.Collection.Generic.list
中隐式强制转换“string”
您将其存储在字典中的动机似乎是因为您想使用这里有字典,不是因为你需要用字典。您对这些数据的实际目标是什么?@Sandokan您需要更改的不仅仅是类型,您还必须更改代码才能正常工作。