Перетворити список у рядок, розділений комами


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);повинен це зробити.
Мітрандір

2
Для всіх, хто хоче повторно відкрити це, якщо він не надто локалізований, це дублікат: stackoverflow.com/questions/799446/…
Тім Шмелтер,

Відповіді:


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. коли я використовую згадану вами функцію агрегату, він говорить "Неможливо перетворити лямбда-вираз у делегат типу" System.Func <int, int, int> ", оскільки деякі типи повернення в блоці неявно не перетворюються на тип повернення делегата" та "Неможливо неявно перетворити тип" string "у" int ""
Харі

1
@Hari Ви повинні перетворити його в рядкові значення, перш ніж Агрегувати в рядок. Отже, ви можете зробити щось подібне: list.Select (x => string.Format ("{0}: {1}", x.Key, x.Value)). Aggregate ((a, x) => a + " , "+ х);
ставки

11

Якщо у вас є колекція ints:

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 для оцінки та друку всіх ролей, розділених комами.


3

Ви можете використовувати String.Join для цього, якщо ви використовуєте .NET Framework> 4.0.

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

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

HTH


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
categories = ['sprots', 'news'];
categoriesList = ", ".join(categories)
print(categoriesList)

Це вихід: проростки, новини


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.