如何生成C#对象属性名与属性值的两组逗号分隔字符串
解决方案
你需要分别收集属性名和属性值的集合,再将它们格式化为要求的字符串形式,修改后的代码如下:
var flags = System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.FlattenHierarchy; System.Reflection.PropertyInfo[] infos = this.GetType().GetProperties(flags); // 收集带双引号的属性名列表 var propertyNames = infos.Select(info => $"\"{info.Name}\"").ToList(); // 收集带双引号的属性值列表,处理null情况 var propertyValues = infos.Select(info => { object value = info.GetValue(this, null); return value != null ? $"\"{value}\"" : "\"null\""; }).ToList(); // 拼接成最终格式:先属性名逗号分隔,换行后再属性值逗号分隔 return $"{string.Join(",", propertyNames)}{Environment.NewLine}{string.Join(",", propertyValues)}";
关键修改说明:
- 用LINQ的
Select分别提取属性名和处理后的属性值,为每个元素添加双引号以匹配示例格式 - 通过
string.Join将列表元素用逗号拼接成完整的字符串 - 若不需要换行,直接合并成一行的话,可将返回语句改为:
return $"{string.Join(",", propertyNames)},{string.Join(",", propertyValues)}";
内容的提问来源于stack exchange,提问作者Gayu
相关产品推荐
相关产品推荐

