Bir IList koleksiyonunu virgülle ayrılmış bir kimliğe dönüştürmek için herhangi bir zarif yol var mı?Bir IList <int> koleksiyonunu virgülle ayrılmış bir listeye dönüştürün
"1,234,2,324,324,2"
Bir IList koleksiyonunu virgülle ayrılmış bir kimliğe dönüştürmek için herhangi bir zarif yol var mı?Bir IList <int> koleksiyonunu virgülle ayrılmış bir listeye dönüştürün
"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()));
Çalışmıyor. ForEach(), IList
Bu benim hatam oldu, düzeltildi –
Yine de yanlıştı, neden ForEach yazdım emin değilim ... –
Sen yapabilirsiniz:
// Given: IList<int> collection;
string commaSeparatedInts = string.Join(",",collection.Select(i => i.ToString()).ToArray());
Bu, ona
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);
yapacak VEYA tamamen Linq ile
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();
İyi bir seçim, her zaman StringBuilder'i bir araya getirme konusunda çok daha hızlı buldum. Özellikle listenin boyutu BÜYÜK ise faydalıdır! –
StringBuilder.SubString yok, ne istiyorsun StringBuilder.ToString (int startIndex, int uzunluk) – 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);
Bir cevap veren kişi oylama neden oy verildiğine dair bir yorum bırakırsa yararlı olur. Bu, soruna mükemmel bir çözüm! –
Evet, meşru, bunu yapmanın en basit yolu değil. Sıralama sistemi, en iyi cevapları almakla ilgilidir. –
Bir cevabın sadece yanlış, yanlış veya ayrıntı içermiyorsa oylanacağını düşünürdüm. Burada LINQ kullanarak gönderilen cevapların çoğu mutlaka "basit" değil! –
mstrickland çünkü büyük listeleri ile hızı dize oluşturucu kullanarak iyi bir fikri vardır. Ancak, bir stringbuilder dizesi olarak ayarlayamazsınız. Bunun yerine deneyin.
var strBuilder = new StringBuilder();
foreach (var obj in list)
{
strBuilder.Append(obj.ToString());
strBuilder.Append(",");
}
return strBuilder.ToString(0, strBuilder.Length - 1);
Bu diğer soru için yeterince yakın değil mi? –