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的数字)的示例?

相关推荐
泡海椒11 小时前
JQuick-SQL 快速开始:注册内存表并执行查询
数据库·windows·sql
用户7884773163414 小时前
用 C# 把每周 6 小时的 PDF 录入干到 20 分钟:一份可复制的桌面 OCR 方案
c#
钱栈up14 小时前
耳机音效不对,我顺手查了系统更新,结果挖出个崩溃了整天的服务
windows·shell
xiao77mwq14 小时前
Wireshark 在 Windows 上没法按进程抓包,我补了一条路
windows
Helix25015 小时前
MDT自动化部署实战:构建企业级Windows批量装机与PXE网络引导环境
windows·mdt自动化部署·wds网络启动·pxe引导·windows批量装机·任务序列·无人值守安装
学IT的周星星16 小时前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
csdn_aspnet16 小时前
C# .NetCore Swagger ISchemaFilter 处理枚举、特殊类型
c#·.netcore·swagger
滴滴答答哒16 小时前
C# 技巧:优雅实现对象的“局部更新”与“字段合并”
开发语言·c#
撞强17 小时前
Windows 上从零开始:Obsidian + Copilot(Icompify)+ 客户洞察实战 · 图文指南
windows·copilot·obsidian·icompify
weixin_5716674118 小时前
Windows 通过 SSH 反向隧道向 Ubuntu 转发代理
linux·运维·windows·代理