Converter lista em sequência separada por vírgula


158

Meu código é como abaixo:

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

Resultado: 1,2,3,4,5

Qual é a maneira mais simples de converter a List<uint>string em vírgula?


9
String.Joiné tudo o que você precisa.
asawyer

9
var csvString = String.Join(",", lst);deve fazê-lo.
Mithrandir

2
Para quem quer reabrir isso, se não é muito localizada, é uma duplicata: stackoverflow.com/questions/799446/...
Tim Schmelter

Respostas:


320

Aproveitar!

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

Primeiro Parâmetro: ","
Segundo Parâmetro:new List<uint> { 1, 2, 3, 4, 5 })

String.Join terá uma lista como o segundo parâmetro e unirá todos os elementos usando a string passada como o primeiro parâmetro em uma única string.


11
No .NET 3.5 e abaixo, você precisa converter explicitamente sua lista em matriz lst.ToArray(), pois ainda não há sobrecarga direta.
Anton


25

Usando String.Join

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

Usando Linq Aggregation

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

1
Eu tenho uma lista do tipo int32. quando eu uso a função agregada que você mencionou, ele diz "Não é possível converter a expressão lambda para delegar o tipo 'System.Func <int, int, int>' porque alguns dos tipos de retorno no bloco não são implicitamente conversíveis no tipo de retorno delegado" e "Não é possível converter implicitamente o tipo 'string' para 'int'"
Hari

1
@Hari Você deve convertê-lo em valores de sequência antes de Agregar em sequência. Portanto, você pode fazer algo assim: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Agregado ((a, x) => a + " , "+ x);
aposta

11

Se você tem uma coleção de entradas:

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

Você pode usar string.Joinpara obter uma string:

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

Aproveitar!


9

Siga isso:

       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

           }

Eu usei no MVC Razor View para avaliar e imprimir todas as funções separadas por vírgulas.


3

Você pode usar String.Join para isso se estiver usando o .NET framework> 4.0.

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

2

Você pode consultar o exemplo abaixo para obter uma matriz de sequências separadas por vírgula da lista.

Exemplo:

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

Experimentar

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

HTH


1

Podemos tentar assim separar as entradas da lista por vírgula

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

Converta uma lista de cadeias de caracteres em cadeia de caracteres separada por vírgula C #


0

você também pode substituir ToString () se o item da lista tiver mais de uma string

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

    }

}

para obter a string 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)

Esta é a saída: sprots, notícias


0

Você pode separar as entidades da lista por vírgula como esta:

//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);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.