将列表转换成逗号分隔的字符串


158

我的代码如下:

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>为以逗号分隔的字符串的最简单方法是什么?


8
String.Join是你所需要的全部。
asawyer

8
var csvString = String.Join(",", lst);应该这样做。
Mithrandir

2
对于任何人谁愿意重开这一点,如果这不是太本地化这是一个重复:stackoverflow.com/questions/799446/...
蒂姆Schmelter

Answers:


319

请享用!

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(),因为目前尚无直接重载。
安东


25

使用 String.Join

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

使用 Linq Aggregation

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

1
我有int32类型的列表。当我使用您提到的聚合函数时,它说“无法将lambda表达式转换为委托类型'System.Func <int,int,int>”,因为该块中的某些返回类型不能隐式转换为委托返回类型”和“无法将类型'string'隐式转换为'int'”
Hari 2015年

1
@Hari必须先将其转换为字符串值,然后再绑定为字符串。因此,您可以执行以下操作:list.Select(x => string.Format(“ {0}:{1}”,x.Key,x.Value))。Aggregate((a,x)=> a +“ ,“ + x);
下注

11

如果您有整数集合:

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

您可以string.Join用来获取字符串:

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

请享用!


9

请遵循以下步骤:

       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()));

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

           }

我在MVC Razor视图中用于评估和打印所有用逗号分隔的角色。



2

您可以参考以下示例,以从列表中获取逗号分隔的字符串数组。

例:

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());

1

尝试

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

高温超导


1

我们可以这样尝试用逗号分隔列表实体

string stations = 
haul.Routes != null && haul.Routes.Count > 0 ?String.Join(",",haul.Routes.Select(y => 
y.RouteCode).ToList()) : string.Empty;


0
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#


0

如果列表项包含多个字符串,则还可以覆盖ToString()

public class ListItem
{

    public string string1 { get; set; }

    public string string2 { get; set; }

    public string string3 { get; set; }

    public override string ToString()
    {
        return string.Join(
        ","
        , string1 
        , string2 
        , string3);

    }

}

获取csv字符串:

ListItem item = new ListItem();
item.string1 = "string1";
item.string2 = "string2";
item.string3 = "string3";

List<ListItem> list = new List<ListItem>();
list.Add(item);

string strinCSV = (string.Join("\n", list.Select(x => x.ToString()).ToArray()));

0
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

这是输出:sprots,新闻


0

您可以使用逗号分隔列表实体,如下所示:

//phones is a list of PhoneModel
var phoneNumbers = phones.Select(m => m.PhoneNumber)    
                    .Aggregate(new StringBuilder(),
                        (current, next) => current.Append(next).Append(" , ")).ToString();

// Remove the trailing comma and space
if (phoneNumbers.Length > 1)
    phoneNumbers = phoneNumbers.Remove(phoneNumbers.Length - 2, 2);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.