преобразовать строку [] в строку без использования foreach - PullRequest
0 голосов
/ 10 мая 2009
string x;
foreach(var item in collection)
{
   x += item+",";
}

можно написать что-нибудь подобное с лямбдами?

Ответы [ 5 ]

18 голосов
/ 10 мая 2009

Предполагая C #, вы пробовали String.Join ()? Или использование лямбды обязательно?

Пример:

string[] myStrings = ....;
string result = String.Join(",", myStrings);

EDIT

Хотя первоначальный заголовок (и пример) касался объединения строк с разделителем (на мой взгляд, String.Join() делает лучшую работу), оригинальный плакат, кажется, спрашивает о более широком решении: как применить пользовательский формат список строк.

Мой ответ на этот вопрос - написать свой собственный метод. У String.Join есть цель, отраженная в его названии (объединяет несколько строк). Вероятность того, что логика вашего формата имеет значение в вашем проекте, высока, поэтому напишите его, дайте ему правильное имя и используйте его.

Например, если вы хотите вывести <li>text</li> для каждого элемента, сделайте что-то вроде этого:

string FormatAsListItems(string[] myStrings)
{
    StringBuilder sb = new StringBuilder();
    foreach (string myString in myStrings)
    {
         sb.Append("<li>").Append(myString).Append("</li>");
    }
}

Я думаю, что цель более ясна, и вы также не берете на себя снижение производительности при конкатенации строк в цикле.

5 голосов
/ 10 мая 2009
string x = string.Join(",", collection);
2 голосов
/ 10 мая 2009

Вы ищете слишком далеко для решения. Класс String имеет метод Join для этого:

string x = String.Join(",", collection);
1 голос
/ 10 мая 2009
string[] text = new string[] { "asd", "123", "zxc", "456" };

var result = texts.Aggregate((total, str) => total + "," + str);

Более короткий синтаксис, благодаря Earwicker

1 голос
/ 10 мая 2009

Это отвечает на ваш вопрос?

Самый эффективный способ объединения строк?

Обратите внимание, что вы можете сделать это с помощью Aggregate, но встроенный string.Join проще в использовании и быстрее для длинных массивов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...