Listeyi Virgülle Ayrılmış Dizeye Dönüştür


158

Kodum aşağıdaki gibidir:

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

Çıktı: 1,2,3,4,5

List<uint>Virgülle ayrılmış dizeye dönüştürmenin en basit yolu nedir ?


9
String.Jointüm ihtiyacın olan.
asawyer

9
var csvString = String.Join(",", lst);yapmalı.
Mithrandir

2
Bunu yeniden açmak isteyen herkes için, eğer çok lokalize değilse, bu bir
kopyadır

Yanıtlar:


320

Zevk almak!

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

İlk Parametre: ","
İkinci Parametre:new List<uint> { 1, 2, 3, 4, 5 })

String.Join , bir listeyi ikinci parametre olarak alır ve ilk parametre olarak geçirilen dizeyi tek bir dizeye kullanarak tüm öğeleri birleştirir.


11
.NET 3.5 ve daha önceki sürümlerde lst.ToArray(), doğrudan bir aşırı yükleme olmadığından listenizi açıkça diziye dönüştürmeniz gerekir .
Anton


25

kullanma String.Join

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

kullanma Linq Aggregation

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

1
İnt32 türünde bir listem var. bahsettiğiniz toplama işlevini kullandığımda, "lambda ifadesi 'System.Func <int, int, int>' temsilci tipine dönüştürülemiyor çünkü bloktaki bazı döndürme türleri temsilci dönüş türüne dolaylı olarak dönüştürülemiyor" ve "'String' türü dolaylı olarak 'int' biçimine dönüştürülemiyor"
Hari

1
@Hari Dizeye Toplamadan önce dize değerlerine dönüştürmeniz gerekir. Böylece şöyle bir şey yapabilirsiniz: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Aggregate ((a, x) => a + " , "+ x);
bahisler

11

Bir ints koleksiyonunuz varsa:

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

string.JoinBir dize almak için kullanabilirsiniz :

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

Zevk almak!


9

Bunu takip et:

       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 View'da virgülle ayrılmış tüm rolleri değerlendirmek ve yazdırmak için kullandım.


3

.NET framework> 4.0 kullanıyorsanız, bunun için String.Join kullanabilirsiniz.

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

2

Listeden virgülle ayrılmış bir dize dizisi almak için aşağıdaki örneğe başvurabilirsiniz.

Misal:

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

Deneyin

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

HTH


1

Liste girişlerini virgülle ayırmak için bunu deneyebiliriz

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

0

Joiner adlı bir yardımcı program sınıfına sahip google-collections.jar dosyasını kullanabilirsiniz.

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

veya

join adlı işlevi olan StringUtils sınıfını kullanabilirsiniz. StringUtils sınıfını kullanmak için common-lang3.jar kullanmanız gerekir

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

referans için bu bağlantıya bakın 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);}

Dize listesini virgülle ayrılmış dizeye C # dönüştürme


0

liste öğenizde birden fazla dize varsa ToString () öğesini de geçersiz kılabilirsiniz

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 dizesini almak için:

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)

Bu çıktı: sprots, haberler


0

Liste varlıklarını aşağıdaki gibi bir virgülle ayırabilirsiniz:

//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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.