Как создать строку с разделителями-запятыми из ArrayList?



Я храню ArrayList идентификаторов в скрипте обработки, который я хочу выплюнуть как список с разделителями-запятыми для вывода в журнал отладки. Есть ли способ, которым я могу получить это легко, не зацикливаясь на вещах?



EDIT: спасибо Джоэлу за указание списка (из T), который доступен в .net 2.0 и выше. Это делает вещи тоннами легче, если у вас есть это доступно.

514   6  

6 ответов:

Да, я отвечаю на свой собственный вопрос, но я еще не нашел его здесь и подумал, что это довольно гладкая вещь:

... in VB.NET:

String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))

...в C#

string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))

единственный "gotcha" к ним является то, что ArrayList должен иметь элементы, хранящиеся в виде строк, Если вы используете Option Strict, чтобы убедиться, что преобразование происходит правильно.

EDIT: если вы используете .net 2.0 или выше, просто создайте объект типа списка (строки), и вы можете получить то, что вам нужно. Большое спасибо Джоэлу за то, что он поднял этот вопрос!

String.Join(",", TargetList.ToArray())

решения до сих пор все довольно сложно. Идиоматическое решение, несомненно, должно быть:

String.Join(",", x.Cast(Of String)().ToArray())

в новых версиях фреймворка нет необходимости в причудливой акробатике. Предположим, что не очень современная версия, было бы проще всего:

Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))

второе решение mspmsp-это хороший подход, но он не работает, потому что он пропускает AddressOf ключевое слово. Кроме того,Convert.ToString - Это довольно неэффективно (много ненужных внутренних оценок) и Convert класс, как правило, не очень чисто спроектирован. Я стараюсь избегать этого, тем более, что это совершенно излишне.

что-то типа:

String.Join(",", myArrayList.toArray(string.GetType()) );

который в основном петли я знаю...

EDIT

Как насчет:

string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));

string.Join(" ,", myArrayList.ToArray()); Это будет работать с .net framework 4.5

foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()

или

string.Concat(foo.ToArray().Select(a => a += ",").ToArray())

вот простой пример, демонстрирующий создание строки с разделителями-запятыми с помощью String.Join () из списка строк:

List<string> histList = new List<string>();
histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
histList.Add(Index.ToString());
/*arValue is array of Singles */
foreach (Single s in arValue)
{
     histList.Add(s.ToString());
}
String HistLine = String.Join(",", histList.ToArray());

Comments

    Ничего не найдено.