Sử dụng phương pháp ToDictionary:
Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value.ToString());
Ở đây bạn tái sử dụng chìa khóa từ điển gốc và bạn chuyển đổi các giá trị cho xâu kí tự bằng cách sử dụng phương pháp ToString.
Nếu từ điển của bạn có thể chứa giá trị null bạn nên thêm một kiểm tra null trước khi thực hiện ToString:
Dictionary<string, string> dString = dObject.ToDictionary(k => k.Key, k => k.Value == null ? "" : k.Value.ToString());
Lý do làm việc này là các Dictionary<string, object>
thực sự là một IEnumerable<KeyValuePair<string,object>>
. Ví dụ mã trên lặp lại thông qua enumerable và xây dựng một từ điển mới bằng cách sử dụng phương pháp ToDictionary.
Edit:
Trong Net 2.0, bạn không thể sử dụng phương pháp ToDictionary, nhưng bạn có thể đạt được cùng sử dụng một kiểu cũ tốt foreach:
Dictionary<string, string> sd = new Dictionary<string, string>();
foreach (KeyValuePair<string, object> keyValuePair in dict)
{
sd.Add(keyValuePair.Key, keyValuePair.Value.ToString());
}
Edit2:
Nếu bạn đang sử dụng .Net 2.0 và bạn có thể có giá trị null trong từ điển, những điều sau đây phải an toàn:
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());
}
Tôi đang sử dụng .NET 2.0, có thể có trong đó. Tôi không nhận được "ToDictionary" –
@Rune: 'k.Value.ToString()' trả về luôn luôn giống như '(string) k.Value'? –
@Oscar: Không. (String) k.Value sẽ thất bại nếu giá trị là một đối tượng không phải chuỗi. ToString() là an toàn cho tất cả các giá trị không null. –