繁体   English   中英

如何转换字典 <string, object> 到字典 <string, string> 在C#中

[英]How to convert Dictionary<string, object> to Dictionary<string, string> in c#

我在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());
}

EDIT2:

如果您使用的是.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());
}

.NET 3.5:

Dictionary<string, string> result = dObject.ToDictionary(kvp => kvp.Key, kvp => Convert.ToString(kvp.Value));

.NET 2.0:

Dictionary<string, string> result = new Dictionary<string, string>();
foreach (KeyValuePair<string, object> kvp in dObject) result.Add(kvp.Key, Convert.ToString(kvp.Value));

由于您使用的是.net 2.0:

Dictionary<string, string> dString = new Dictionary<string, string>();

foreach (KeyValuePair<string, object> item in dObject)
{
    dString.Add(item.Key, item.Value.ToString());
    //here item.Value.ToString() is an example
    //you should convert your item to string according to the requirement
}

怎么样:

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

在.Net 2.0中,您最好的朋友可能是foreach循环:

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

foreach (KeyValuePair<string, object> keyValuePair in dObject)
{
    newObjects.Add(keyValuePair.Key, keyValuePair.Value.ToString());
}
Dictionary<string, string> dString = dObject.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.ToString());

只是想法而已。 您可以插入任何验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM