5

将 IList 集合转换为逗号分隔的 id 字符串的任何优雅方法?

“1,234,2,324,324,2”

4

6 回答 6

16
    IList<int> list = new List<int>( new int[] { 1, 2, 3 } );
    Console.WriteLine(string.Join(",", list));
于 2009-10-07T00:57:27.190 回答
5

你可以做:

// Given: IList<int> collection;

string commaSeparatedInts = string.Join(",",collection.Select(i => i.ToString()).ToArray());
于 2009-10-07T00:58:25.443 回答
3

这会做到的

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);

或完全使用 Linq

string aggr = strings.Select(s=> s.ToString()).Aggregate((agg, item) => agg + "," + item);
于 2009-10-07T01:01:29.210 回答
3
// 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();
于 2009-10-07T01:02:46.337 回答
0
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);
于 2009-10-07T02:32:40.520 回答
0

mstrickland 有一个使用字符串生成器的好主意,因为它的速度与更大的列表有关。但是,您不能将 stringbuilder 设置为字符串。试试这个。

    var strBuilder = new StringBuilder();

    foreach (var obj in list)
    {
        strBuilder.Append(obj.ToString());
        strBuilder.Append(",");
    }

    return strBuilder.ToString(0, strBuilder.Length - 1); 
于 2010-03-13T01:32:52.730 回答