C#中将指定Property的IEnumerable<List<string>>转为换行分隔单字符串
如何将筛选后的多层消息集合转换为换行分隔的字符串?
你当前的筛选代码得到的是IEnumerable<List<string>>类型的嵌套集合,要转换成目标格式,需要两步:扁平化嵌套集合 + 用换行符拼接所有字符串。
完整实现代码
// 1. 筛选并扁平化消息集合 var filteredMessages = WebApiResponse.details .Where(x => x.property == "User" || x.property == "EmployeeId") .SelectMany(x => x.messages); // 用SelectMany把嵌套的List<string>展开为一维的字符串集合 // 2. 拼接成换行分隔的字符串(如果需要每行开头带空格,就用下面的写法) var result = string.Join(Environment.NewLine, filteredMessages.Select(msg => $" {msg}")); // 如果不需要开头空格,直接用: // var result = string.Join(Environment.NewLine, filteredMessages);
代码说明
SelectMany是关键:它会遍历每个符合条件的Details对象,把它们的messages列表中的所有字符串提取出来,合并成一个单一的IEnumerable<string>集合,解决了嵌套集合的问题。string.Join(Environment.NewLine, ...)会把所有字符串用系统默认的换行符(Windows是\r\n,Linux/macOS是\n)连接起来,刚好符合你需要的每行一条消息的格式。- 如果需要每行开头带空格,通过
Select(msg => $" {msg}")给每个消息字符串前添加一个空格即可。
内容的提问来源于stack exchange,提问作者DevP
相关产品推荐
相关产品推荐

