C# `string.Join` 处理 `List<int>`

C# string.Join 处理 List<int>

string.Join 不能直接把 List<int> 当作 IEnumerable<string>,但有两种常用写法:

方式1:配合 .Select() 转字符串(推荐)

复制代码
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        List<int> m = new List<int> { 1, 2, 3, 4, 5 };

        // 逗号分隔
        string result = string.Join(",", m.Select(x => x.ToString()));
        Console.WriteLine(result); // 输出:1,2,3,4,5

        // 无分隔直接拼接
        string result2 = string.Join("", m.Select(x => x.ToString()));
        Console.WriteLine(result2); // 输出:12345
    }
}

需要引用:using System.Linq;

方式2:.NET 4.0+ / .NET Core 及以上重载(不用Select)

string.Join(string, IEnumerable<object>),int会隐式装箱,内部自动调用ToString()

复制代码
List<int> m = new List<int> { 10, 20, 30 };
string result = string.Join("|", m); 
// 输出:10|20|30

✅ 原理:List<int> 是 IEnumerable<int>,可隐式转为 IEnumerable<object>

⚠️ 注意事项

  1. 空 List:返回空字符串,不会报错

    List m = new List();
    string s = string.Join(",", m); // s = ""

  2. 性能:

    • 少量数据:直接 string.Join(",", m) 最简单
    • 超大集合 :推荐 Select(x=>x.ToString()) 版本,减少装箱开销
  3. 空元素:int 不可能为 null,不用处理null

拓展:自定义数字格式化

复制代码
List<int> m = new List<int> { 1, 2, 3 };
string result = string.Join(",", m.Select(x => x.ToString("D3")));
// 输出:001,002,003

如果你用的是 .NET Framework 3.5 ,只能用 Select 写法,没有 IEnumerable<object> 这个重载。

要不要顺便写一个带条件过滤(只拼接大于0的数字)的示例?

相关推荐
AI导出鸭PC端2 小时前
Perplexity批量导出没有PDF模式?AI导出鸭插件补上最后一块拼图
人工智能·pdf·c#·ai导出鸭
csdn_aspnet2 小时前
Redis 入门:Windows、Mac安装指南
数据库·windows·redis·缓存·mac
Risehuxyc3 小时前
C# 选用更流行的语言版本
c#
淡海水1 天前
09-04-内存-Unity原生对象生命周期
unity·c#·游戏引擎·gc
没差c1 天前
winsw将jar、nginx等注册为Windows服务
windows·nginx·jar
光谱SpectrAI1 天前
Claude Code 2.1.318 的隐私模块:4 条命令,拦了 2 条
windows
吴可可1231 天前
富怡CAD二次开发指南
c#
1-1=01 天前
C# IO和序列化
c#·.net·.netcore
Hello_Pyhx1 天前
NWinfo 导出 Windows 硬件信息:从 JSON 报告到缺项排查
windows·json
寂寞的船1 天前
【Unity Bug挑战】第10期 SerializeReference 内存泄漏之谜
unity·c#·游戏引擎·bug