Qualche modo elegante di convertire una collezione IList in una stringa di id separati da virgola?Convertire una collezione IList <int> in una lista separata da virgole
"1,234,2,324,324,2"
Qualche modo elegante di convertire una collezione IList in una stringa di id separati da virgola?Convertire una collezione IList <int> in una lista separata da virgole
"1,234,2,324,324,2"
IList<int> list = new List<int>(new int[] { 1, 2, 3 });
Console.WriteLine(string.Join(",", list.Select(i => i.ToString()).ToArray()));
Non funziona. ForEach() è definito nell'elenco
Era un mio errore, corretto –
E 'stato comunque sbagliato, non sono sicuro del motivo per cui ho scritto ForEach ... –
si può fare:
// Given: IList<int> collection;
string commaSeparatedInts = string.Join(",",collection.Select(i => i.ToString()).ToArray());
Questo lo farà
IList<int> strings = new List<int>(new int[] { 1,2,3,4 });
string[] myStrings = strings.Select(s => s.ToString()).ToArray();
string joined = string.Join(",", myStrings);
o interamente con LINQ
string aggr = strings.Select(s=> s.ToString()).Aggregate((agg, item) => agg + "," + item);
// list = IList<MyObject>
var strBuilder = new System.Text.StringBuilder();
foreach(var obj in list)
{
strBuilder.Append(obj.ToString());
strBuilder.Append(",");
}
strBuilder = strBuilder.SubString(0, strBuilder.Length -1);
return strBuilder.ToString();
Una buona scelta, ho sempre trovato StringBuilder per essere molto più veloce in concatenazione. Particolarmente utile se la dimensione della lista è GRANDE! –
StringBuilder.SubString non esiste, ciò che si desidera è StringBuilder.ToString (int startIndex, lunghezza int) – Trillian
List<int> intList = new List<int>{1,234,2,324,324,2};
var str = intList.Select(i => i.ToString()).Aggregate((i1,i2) => string.Format("{0},{1}",i1,i2));
Console.WriteLine(str);
Sarebbe utile se la persona che ha votato per una risposta lascerebbe un commento sul motivo per cui è stato rifiutato. Questa è una soluzione perfettamente legittima al problema! –
Sì, legittimo, non solo il modo più semplice per farlo. Il sistema di classificazione è semplicemente quello di ottenere le migliori risposte verso l'alto. –
Immagino che una risposta possa essere votata solo se è errata, imprecisa o priva di dettagli. La maggior parte delle risposte pubblicate qui utilizzando LINQ non sono necessariamente "semplici"! –
mstrickland ha una buona idea sull'utilizzo del generatore di stringhe a causa della sua velocità con elenchi più grandi. Tuttavia, non è possibile impostare un costruttore di stringhe come stringa. Prova questo invece.
var strBuilder = new StringBuilder();
foreach (var obj in list)
{
strBuilder.Append(obj.ToString());
strBuilder.Append(",");
}
return strBuilder.ToString(0, strBuilder.Length - 1);
Non è abbastanza vicino alla tua altra domanda? –