我在 C# 中有以下代码
Dictionary<string, object> dObject = new Dictionary<string, object>();
我要转换dObject
至 Dictionary<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/