在C#中列出<long>到逗号分隔的字符串</long>

时间:2010-12-02 00:13:05

标签: c# string list

这常常出现。我有一个List,我想转到逗号分隔的列表,列出了我可以在SQL中使用的所有元素。

在C#中执行此操作的最优雅方法是什么?迭代所有这些都很好,除了第一个或最后一个元素必须是特殊的,因为我不想要前导或尾随逗号。

有一个好的单行?

8 个答案:

答案 0 :(得分:28)

string.Join是你的朋友......

var list = new List<long> {1, 2, 3, 4};
var commaSeparated = string.Join(",", list);

答案 1 :(得分:13)

List<long> items = // init here
string result = string.Join(", ", items.Select(i => i.ToString()).ToArray());

不确定它是否是最优雅的方式,但它是1个衬垫!

现在还有一个string.Join接受了IEnumerable<T>,所以它变得更短了:

string result = string.Join(", ", items);

感谢类型推断,您无需指定Join<long>

答案 2 :(得分:3)

string.Join(",", Array.ConvertAll(list.ToArray(), item => item.ToString()));

(直接写入帖子,所以我可能有一些参数错误,但你明白了)

答案 3 :(得分:2)

如果您是手动执行此操作,则不应该对第一个和最后一个值都有特殊情况,而是可以执行此操作:

List<long> junk = // have some values here;
string separator = string.Empty;
string list = string.Empty;

foreach(long john in junk)
{
    list += separator + john.ToString();
    separator = ", ";
}

不是说你应该这样做,只是将其视为评论。

答案 4 :(得分:2)

// Content IDs
List<long> cIds = new List<long>();
cIds.Add(1);
cIds.Add(2);
cIds.Add(1);
cIds.Add(3);
cIds.Add(3);
string ids = string.Join(",", cIds.Distinct().Select(x => x.ToString()).ToArray());
// The example return the following output:
// ids = "1,2,3"

返回以逗号分隔的唯一项目列表。

答案 5 :(得分:1)

    public static string CommaSeparate(this IEnumerable<string> values)
    {
        if (values.Count() == 0) return "[none]";
        return string.Join(", ", values.ToArray());
    }

这是我在我的应用程序中执行此操作的扩展方法。它基于IEnumerable,但对于List应该是类似的。

答案 6 :(得分:0)

我相信String.Join会这样做。

答案 7 :(得分:0)

List<long> list =new List<long>(){1,2,3,4,5,6,7};

StringBuilder str =new StringBuilder();    

foreach(var i in list)
{
str.Append(i).Append(',');
}

这会将(stringBuilder)str中的long值附加为

答案:str = 1,2,3,4,5,6,7