如何将字典转ExpandoObject时自动把布尔值转为字符串?
解决方案
你只需在遍历字典向ExpandoObject添加元素时,判断值的类型是否为bool,若是则将其转换为小写字符串形式("true"/"false"),否则直接保留原值即可。修改后的代码如下:
Dictionary<string, object> myDictionary = new Dictionary<string, object>(); myDictionary.Add("FName", "John"); myDictionary.Add("LName2", "Walter"); myDictionary.Add("Coke", true); myDictionary.Add("Pepsi", false); var merge_fields = new ExpandoObject() as IDictionary<string, Object>; foreach (var property in myDictionary) { // 判断值是否为布尔类型,是则转成对应字符串 var valueToAdd = property.Value is bool boolValue ? boolValue.ToString().ToLower() : property.Value; merge_fields.Add(property.Key, valueToAdd); }
关键说明
- 用
is运算符直接判断值类型并完成类型转换,避免额外强制转换操作 - 调用
ToString().ToLower()确保输出标准小写的"true"/"false",匹配示例需求 - 非布尔类型的值保持原样添加,不影响其他数据类型的处理
内容的提问来源于stack exchange,提问作者Mr Sumo
相关产品推荐
相关产品推荐

