LINQ: Как объединить список целых чисел в строку с разделителями-запятыми?
Возможно, что-то глупое я пропустил, но я пытаюсь объединить список целых чисел, а не суммировать их с помощью:
integerArray.Aggregate((accumulator, piece) => accumulator+"," + piece)
Компилятор жаловался на ошибку аргумента. Есть ли способ сделать это без необходимости проходить цикл?
Ответы
Ответ 1
Какая версия .NET? В 4.0 вы можете использовать string.Join(",",integerArray)
. В 3.5 у меня возникло бы желание использовать string.Join(",",Array.ConvertAll(integerArray,i=>i.ToString()));
(предполагая, что это массив). В противном случае сделайте его массивом или используйте StringBuilder
.
Ответ 2
Ошибка, которую вы получаете, заключается в том, что вы не использовали переопределение Aggregate
, которое позволяет указать семя. Если вы не укажете семя, он использует тип коллекции.
integerArray.Aggregate("", (accumulator, piece) => accumulator + "," + piece);
Ответ 3
Возможно, вы захотите использовать String.Join.
string.Join(",", integerArray.Select(i => i.ToString()).ToArray());
Если вы используете .Net 4.0, вам не нужно беспокоиться о необходимости объединения массива. и может просто сделать
string.Join(",", integerArray);
Ответ 4
Просто добавьте еще одну альтернативу
@Marc <
var list = string.Join( ",", integerArray.Select( i => i.ToString() ).ToArray() );