创建逗号分隔列表和删除尾随逗号的优雅方式

loy*_*low 8 c#

当我生成逗号分隔列表时,我讨厌如何删除尾随逗号.

有没有更好的办法?我经常这样做,所以寻找意见.

for(int x = 0; x < list.Count; x++)
{
  sb.Append(list[x].Name);
  sb.Append(",");
}

var result = sb.toString().Substring(0, result.length - 2);
Run Code Online (Sandbox Code Playgroud)

p.s*_*w.g 22

使用String.Join和Linq的IEnumerable.Select扩展方法.

var str = String.Join(",", list.Select(x => x.Name));
Run Code Online (Sandbox Code Playgroud)


dkn*_*ack 6

描述

您可以使用String.JoinEnumerable.Select(命名空间System.Linq)方法

String.Join使用每个元素之间的指定分隔符连接字符串数组的所有元素.

Enumerable.Select将序列的每个元素投影到新表单中.

样品

String.Join(",", list.Select(x => x.Name));
Run Code Online (Sandbox Code Playgroud)

更多信息


D S*_*ley 5

基本情况:

string.Join(",",list.Select(l => l.Name));
Run Code Online (Sandbox Code Playgroud)

带有空检查:

string.Join(",",list.Where(l => l != null).Select(l => l.Name));
Run Code Online (Sandbox Code Playgroud)

带有空/空检查:

string.Join(",",list.Where(l => l != null && !string.IsNullOrEmpty(l.Name)).Select(l => l.Name));
Run Code Online (Sandbox Code Playgroud)

与修剪:

string.Join(",",list.Select(l => l.Name.Trim()));
Run Code Online (Sandbox Code Playgroud)

既:

string.Join(",",list.Where(l => l != null && !string.IsNullOrEmpty(l.Name)).Select(l => l.Name.Trim()));
Run Code Online (Sandbox Code Playgroud)

  • 从.net 4.0开始,有 string.Join(String, IEnumerable&lt;String&gt;) 因此不需要 ToArray() (2认同)