Преобразовать список в разделенную запятыми строку


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>строку в запятую?


9
String.Joinэто все, что тебе нужно.
— asawyer

9
var csvString = String.Join(",", lst);должен сделать это.
— Митрандир

2
Для тех, кто хочет открыть это, если он не слишком локализован, это дубликат: stackoverflow.com/questions/799446/…
— Тим Шмельтер

Ответы:


320

Наслаждайтесь!

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. когда я использую агрегатную функцию, о которой вы упомянули, она говорит: «Невозможно преобразовать лямбда-выражение в тип делегата« System.Func <int, int, int> », потому что некоторые из возвращаемых типов в блоке неявно не преобразуются в возвращаемый тип делегата» и «Невозможно неявно преобразовать тип 'string' в 'int'"
— Хари

1
@Hari Вы должны преобразовать его в строковые значения, прежде чем Aggragate в строку. Таким образом, вы можете сделать что-то вроде этого: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Aggregate ((a, x) => a + " , "+ х);
— делает ставку

11

Если у вас есть коллекция целых:

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

Вы можете использовать, string.Joinчтобы получить строку:

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

Наслаждайтесь!



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

           }

Я использовал в MVC Razor View для оценки и печати всех ролей, разделенных запятыми.



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

Мы можем попытаться так, чтобы разделить список элементов запятыми

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

0

Вы можете использовать google-collection.jar, в котором есть служебный класс Joiner

 String commaSepString=Joiner.on(",").join(lst);

или

вы можете использовать класс StringUtils с функцией join. Для использования класса StringUtils вам нужно использовать common-lang3.jar

String commaSepString=StringUtils.join(lst, ',');

для справки, обратитесь по этой ссылке http://techno-terminal.blogspot.in/2015/08/convert-collection-into-comma-separated.html


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

Вы можете разделить список объектов запятой, как это:

//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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.