【发布时间】:2018-05-23 15:24:29
【问题描述】:
我创建了一个包含以下内容的嵌套字典:
Dictionary<DateTime, Dictionary<string, string>> dateDict =
new Dictionary<DateTime, Dictionary<string, string>>();
然后我使用以下命令将值输入到此字典中:
while (reader.Read())
{
DateTime date = DateTime.Parse(reader["Event_Date"].ToString());
string name = reader["Event_Name"].ToString();
string guid = reader["Event_GUID"].ToString();
dateDict.Add(date, new Dictionary<string, string>());
dateDict[date].Add(name, guid);
}
我的问题是如何正确地将变量从嵌套字典中提取出来?
我运行这个循环来提取值并将它们分配给 DateTimePickers 和 TextFields:
for (int i = 0; i < dateDict.Count; i++)
{
DateTime keyVar = dateDict.ElementAt(i).Key;
eventDateBoxes[i].Value = keyVar;
eventTextBoxes[i].Text = dateDict[keyVar[]];
}
eventTextBoxes 部分是我陷入如何从嵌套字典中提取值的问题,因此这部分代码是错误/不完整的。
我不能使用元组,因为我使用的是低于 4 的 .NET,并且似乎无法将我的头脑围绕着制作一个自定义类来充当它自己的元组或多字典。
【问题讨论】:
-
dateDict[keyVar]会给您Dictionary<string,string>,但是您想如何将其转换为单个string?您可以使用string.Join(";", dataDict[keyVar].Select(kvp => kvp.Key + "=" + kvp.Value)来获取以分号分隔的“key=value”对字符串。 -
@juharr 我只是想从嵌套字典中获取键或值,而不是同时获取两者。我存储 3 个东西,日期时间、字符串(名称)和字符串(GUID),它们是数据库值
-
什么是
eventDateBoxes?如果每个日期有多个事件,您希望如何格式化文本? -
@TimSchmelter eventDateBoxes 是一个列表
-
如果您只需要一个 DateTime 来配对字符串,那么要么使用
Tuple<string, string>或像class MyClass { public string Thing1{get;set;} public string Thing2 {get;set;}}这样的自定义类,不要使用嵌套的Dictionary。
标签: c# dictionary