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您需要更改的不仅仅是类型,您还必须更改代码才能正常工作。