我有一个整数值列表 (List),并想生成一个由逗号分隔值组成的字符串。这是列表中的所有项目输出到单个逗号分隔列表。
我的想法... 1. 将列表传递给方法。 2.使用stringbuilder迭代列表并追加逗号 3. 测试最后一个字符,如果是逗号,则删除。
你有什么想法?这是最好的方法吗?
如果将来我不仅要处理整数(我目前的计划),还要处理字符串、长整型、 double 型、 bool 型等,我的代码将如何更改?我想让它接受任何类型的列表。
最佳答案
Framework 已经为我们所做的一切令人惊叹。
List<int> myValues;
string csv = String.Join(",", myValues.Select(x => x.ToString()).ToArray());
对于一般情况:
IEnumerable<T> myList;
string csv = String.Join(",", myList.Select(x => x.ToString()).ToArray());
如您所见,这实际上没有什么不同。请注意,您可能需要实际包装 x.ToString()
在引号中(即 "\"" + x.ToString() + "\""
)以防 x.ToString()
包含逗号。
有关此内容的细微变体的有趣阅读:请参阅 Comma Quibbling在 Eric Lippert 的博客上。
注意:这是在.NET 4.0 正式发布之前写的。现在我们可以说
IEnumerable<T> sequence;
string csv = String.Join(",", sequence);
使用重载 String.Join<T>(string, IEnumerable<T>)
.此方法将自动投影每个元素 x
至 x.ToString()
.
关于c# - 将通用列表转换为 CSV 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1890093/