c# - 如何在 C# 中将 Dictionary<string, object> 转换为 Dictionary<string, string>

标签 c# c#-2.0

我在 C# 中有以下代码

Dictionary<string, object> dObject = new Dictionary<string, object>();

我要转换dObjectDictionary<string, string> .我该怎么做?

最佳答案

使用 ToDictionary 方法:

Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString());

在这里,您重用了原始字典中的键,并使用 ToString 方法将值转换为字符串。

如果您的字典可以包含空值,您应该在执行 ToString 之前添加一个空值检查:

Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value == null ? "" : k.Value.ToString());

这样做的原因是 Dictionary<string, object>实际上是一个 IEnumerable<KeyValuePair<string,object>> .上面的代码示例遍历可枚举对象并使用 ToDictionary 方法构建一个新字典。

编辑:

在 .Net 2.0 中,您不能使用 ToDictionary 方法,但您可以使用老式的 foreach 方法实现相同的目的:

Dictionary<string, string> sd = new Dictionary<string, string>(); 
foreach (KeyValuePair<string, object> keyValuePair in dict)
{
  sd.Add(keyValuePair.Key, keyValuePair.Value.ToString());
}

编辑2:

如果您使用的是 .Net 2.0 并且您可以在字典中包含空值,则以下内容应该是安全的:

Dictionary<string, string> sd = new Dictionary<string, string>(); 
foreach (KeyValuePair<string, object> keyValuePair in dict)
{
  sd.Add(keyValuePair.Key, keyValuePair.Value == null ? "" : keyValuePair.Value.ToString());
}

关于c# - 如何在 C# 中将 Dictionary<string, object> 转换为 Dictionary<string, string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178419/

相关文章:

c# - 如何检查某个程序集是否存在?

c# - 当我们使用 JSON.Net 序列化可序列化对象时,JSON 字符串与 DatacontractJSON 序列化器不同

c# - for循环中的字符串连接导致应用程序停止 - Xamarin

c# - Entity Framework 7 使用代码优先方法复数表名

c# - 锁定文件同时保留在同一线程中读取/追加/写入/截断的能力?

c#-2.0 - 静态方法——这是通常的行为吗?

c# - 如何在不重新编译的情况下更新 C# DLL 的文件版本号?

C#文件大小限制

c#-2.0 - SSRS 和访问 C# 方法