You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中将List<List<List<double>>>转换为指定格式字符串?

解决C#三层双精度列表转指定格式字符串的问题

你的问题出在直接拼接List<double>对象时,默认调用的是它的ToString()方法,返回的是类型名称而非元素内容,所以才会出现"System.Collections.."这类文本。以下是实现目标格式的代码:

核心实现代码

// 先扁平化三层列表,提取所有的二维点集合
var allPoints = doubles.SelectMany(level2 => level2);
// 将每个二维点转换为 "[数值1, 数值2]" 格式的字符串
var formattedPoints = allPoints.Select(point => $"[{string.Join(", ", point)}]");
// 拼接成最终的带缩进和换行的格式
string result = $"[\n    {string.Join(", \n    ", formattedPoints)}\n]";

空值安全版本(避免空引用异常)

如果你的列表可能存在null元素,建议加上空值检查:

string result = "[]";
if (doubles != null)
{
    // 过滤掉null的二级列表
    var validPoints = doubles.SelectMany(level2 => level2 ?? Enumerable.Empty<List<double>>())
                             // 过滤掉null的点列表
                             .Where(point => point != null);
    var formattedPoints = validPoints.Select(point => $"[{string.Join(", ", point)}]");
    result = $"[\n    {string.Join(", \n    ", formattedPoints)}\n]";
}

代码说明

  1. 扁平化列表:用SelectMany(level2 => level2)把三层的List<List<List<double>>>转换成所有List<double>的集合(也就是你要的每个二维点)。
  2. 格式化单个点:对每个List<double>,用string.Join(", ", point)把元素拼接成"x, y",再包裹方括号变成"[x, y]"。
  3. 拼接最终格式:用\n 作为分隔符,让每个点字符串单独占一行并缩进4个空格,最后在外层包裹大括号和首尾换行,匹配你要的目标格式。

内容的提问来源于stack exchange,提问作者Robert Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 23:15:59