如何将Dictionary <string,object>转换为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方法将值转换为string。

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

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

这个工作的原因是Dictionary<string, object>实际上是一个IEnumerable<KeyValuePair<string,object>> 。 上面的代码示例迭代了enumerable,并使用ToDictionary方法构build一个新的字典。

编辑:

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

这只是想法。 您可以插入任何validation。