LINQ: Как я конкатенирую, список целых чисел в запятую разграничил строку?

Это - вероятно, что-то глупое, которое я пропустил, но я пытаюсь связать список целых чисел вместо того, чтобы суммировать их с:

integerArray.Aggregate((accumulator, piece) => accumulator+"," + piece)

Компилятор жаловался на ошибку аргумента. Существует ли гладкий способ сделать это, не имея необходимость проходить цикл?

37
задан Haoest 26 May 2010 в 23:32
поделиться

4 ответа

Какая версия .NET? В 4.0 вы можете использовать string.Join (",", integerArray) . В версии 3.5 я бы хотел просто использовать string.Join (",", Array.ConvertAll (integerArray, i => i.ToString ())); (при условии, что это равно массив). В противном случае либо сделайте массивом, либо используйте StringBuilder .

67
ответ дан 27 November 2019 в 04:16
поделиться

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

integerArray.Aggregate("", (accumulator, piece) => accumulator + "," + piece);
15
ответ дан 27 November 2019 в 04:16
поделиться

Вероятно, вы захотите использовать String.Join .

string.Join(",", integerArray.Select(i => i.ToString()).ToArray());

Если вы используете .Net 4.0, вам не нужно беспокоиться о повторении массива. и можно просто сделать

 string.Join(",", integerArray);
16
ответ дан 27 November 2019 в 04:16
поделиться

Просто чтобы добавить еще одну альтернативу @Marc's

var list = string.Join( ",", integerArray.Select( i => i.ToString() ).ToArray() );
2
ответ дан 27 November 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: