将一个列表转换为逗号分隔的字符串

228

以下是我的代码:

public void ReadListItem()
{
     List<uint> lst = new List<uint>() { 1, 2, 3, 4, 5 };
     string str = string.Empty;
     foreach (var item in lst)
         str = str + item + ",";

     str = str.Remove(str.Length - 1);
     Console.WriteLine(str);
}

输出:1,2,3,4,5

如何将 List<uint> 最简单地转换为逗号分隔的字符串?


13
String.Join 就是你所需要的。 - asawyer
15
var csvString = String.Join(",", lst); 可以实现。 - Mithrandir
2
对于任何想要重新打开此问题的人,如果它不是太局限性的话,这是一个重复的问题:https://dev59.com/OnRA5IYBdhLWcg3w2x6W - Tim Schmelter
类似的问题(来自2008年):*如何在.NET中将int[]连接成以字符分隔的字符串?* - Peter Mortensen
15个回答

423

享受!

Console.WriteLine(String.Join(",", new List<uint> { 1, 2, 3, 4, 5 }));

第一个参数:","
第二个参数:new List<uint> { 1, 2, 3, 4, 5 }

String.Join会将第二个参数作为列表,并使用作为第一个参数传递的字符串将所有元素连接成一个单独的字符串。


11
在.NET 3.5及以下版本中,由于还没有直接的重载操作符,你需要使用lst.ToArray()显式地将列表转换为数组。请注意,不要改变原始意思。 - Anton

84
您可以使用String.Join 方法来组合项目:
var str = String.Join(",", lst);

2
这对我没有用。它生成的是集合的名称,而不是列表中的对象。 - Rani Radcliff
你需要选择一个类的属性。例如:String.Join(",", lst.Select( x => x.Id )); - Dhaval Tejlavwala

33

使用 String.Join

string.Join<string>(",", lst);

使用 LINQ 聚合:

lst .Aggregate((a, x) => a + "," + x);

1
我有一个 int32 类型的列表。当我使用你提到的聚合函数时,它会显示“无法将 lambda 表达式转换为委托类型 'System.Func<int,int,int>',因为块中的某些返回类型不能隐式转换为委托返回类型”,以及“无法将类型 'string' 隐式转换为 'int'”。 - Hari
1
@Hari 在聚合为字符串之前,您必须将其转换为字符串值。因此,您可以执行以下操作:list.Select(x => string.Format("{0}:{1}", x.Key, x.Value)).Aggregate((a, x) => a+ ", " + x); - bets

11

如果你有一组整数:

List<int> customerIds= new List<int>() { 1,2,3,3,4,5,6,7,8,9 };  

你可以使用 string.Join 来得到一个字符串:

var result = String.Join(",", customerIds);

享受!


2
这基本上与2013年被接受的答案完全相同。 - Peter Mortensen

10

按照以下步骤:

List<string> name = new List<string>();

name.Add("Latif");
name.Add("Ram");
name.Add("Adam");
string nameOfString = (string.Join(",", name.Select(x => x.ToString()).ToArray()));

6
您可以参考以下示例,从列表中获取逗号分隔的字符串数组。
示例:
List<string> testList= new List<string>();
testList.Add("Apple"); // Add string 1
testList.Add("Banana"); // 2
testList.Add("Mango"); // 3
testList.Add("Blue Berry"); // 4
testList.Add("Water Melon"); // 5

string JoinDataString = string.Join(",", testList.ToArray());

5
如果你正在使用 .NET framework>4.0,你可以使用 String.Join。
var result= String.Join(",", yourList);

4
@{ var result = string.Join(",", @user.UserRoles.Select(x => x.Role.RoleName));
    @result
}

我在MVC Razor视图中使用了逗号分隔的方式来评估和打印所有角色。


2

请尝试

Console.WriteLine((string.Join(",", lst.Select(x=>x.ToString()).ToArray())));

HTH


1
static void Main(string[] args) {
    List<string> listStrings = new List<string>() {"C#", "ASP.NET", "SQL Server", "PHP", "Angular"};
    string CommaSeparateString = GenerateCommaSeparateStringFromList(listStrings);
    Console.Write(CommaSeparateString);
    Console.ReadKey();
}

private static string GenerateCommaSeparateStringFromList(List<string> listStrings){return String.Join(",", listStrings);}

C#中将字符串列表转换为逗号分隔的字符串


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接