C# 如何转换字典<;字符串,对象>;到字典<;字符串,字符串>;在c中#

C# 如何转换字典<;字符串,对象>;到字典<;字符串,字符串>;在c中#,c#,c#-2.0,C#,C# 2.0,我有下面的C代码# Dictionary-dObject=new Dictionary(); 我想将dObject转换为Dictionary。如何执行此操作?使用ToDictionary方法: Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString()); Dictionary-dString=dObject.ToDictionary(k=>

我有下面的C代码#

Dictionary-dObject=new Dictionary();

我想将
dObject
转换为
Dictionary
。如何执行此操作?

使用ToDictionary方法:

Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString());
Dictionary-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 dString=dObject.ToDictionary(k=>k.Key,k=>k.Value==null?“:k.Value.ToString());
这样做的原因是
字典实际上是一个
IEnumerable
。上面的代码示例遍历可枚举项,并使用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());
}
Dictionary sd=newdictionary();
foreach(dict中的KeyValuePair KeyValuePair)
{
添加(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());
}
Dictionary sd=newdictionary();
foreach(dict中的KeyValuePair KeyValuePair)
{
Add(keyValuePair.Key,keyValuePair.Value==null?“:keyValuePair.Value.ToString());
}
那么:

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

Dictionary<string, string> result = dObject.ToDictionary(kvp => kvp.Key, kvp => Convert.ToString(kvp.Value));
Dictionary 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));
字典结果=新建字典();
foreach(dObject中的KeyValuePair kvp)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-dString=new Dictionary();
foreach(dObject中的KeyValuePair项)
{
添加(item.Key、item.Value.ToString());
//这里item.Value.ToString()就是一个例子
//您应该根据需要将项目转换为字符串
}

在.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-dObject=new Dictionary();
Dictionary newObjects=newdictionary();
foreach(dObject中的KeyValuePair KeyValuePair)
{
添加(keyValuePair.Key,keyValuePair.Value.ToString());
}
字典dString=dObject.ToDictionary(kvp=>kvp.Key,kvp=>kvp.Value.ToString());

这只是一个想法。您可以插入任何验证。

我正在使用.NET 2.0,这是可能的。我没有得到“ToDictionary”@Rune:Will
k.Value.ToString()
返回的值始终与
(string)k.Value
?@Oscar:No.(string)k.Value如果值是非string对象将失败。ToString()对于所有非空值都是安全的。@Rune:是的,我知道。假设所有元素都是字符串。
ToString()
(string)
会返回相同的值吗?我建议改为使用
Convert.ToString()
。因此,处理
null
值会更容易一些
Convert.ToString(keyValuePair.Value)
Convert.ToString(keyValuePair.Value)??String.Empty
如果字典包含非字符串值,则此操作将失败。例如,您不能将int转换为字符串。首先,我使用的是.NET2.0,这是可能的。我没有使用“ToDictionary”方法。我想如果他想这样做,是因为字典包含
字符串,但无论如何,这是有效的。是的,没错。。但是ToString并不总是产生一个好的字符串。无论如何,这都取决于您的字典对象。:)由于您使用的是.NET2.0,foreach将是您最好的伙伴!gl如果其中有空值怎么办?@MKS:这就是为什么我说“根据要求将您的项目转换为字符串”,例如您可以使用
string.Empty
表示空值,或者字符串“NULL”表示空值…一切都取决于要求。有时键中也可能有空值,请建议如何转换?
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());