У меня есть код в С#
Dictionary<string, object> dObject = new Dictionary<string, object>();
Я хочу преобразовать dObject
в Dictionary<string, string>
. Как я могу это сделать?
У меня есть код в С#
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.
Edit:
В .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());
Это просто идея. Вы можете вставить любые проверки.