c# - 将通用列表转换为 CSV 字符串

标签 c# generics .net-3.5

我有一个整数值列表 (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>) .此方法将自动投影每个元素 xx.ToString() .

关于c# - 将通用列表转换为 CSV 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1890093/

相关文章:

c# - 如何验证批量插入中的数据

delphi - 如何用泛型方法继承类?

c# - 如何检查(通用)数字类型是 C# 中的整数类型还是非整数类型?

c# - 组合框上的限制自动完成

c# - 在 C# 中将方法作为参数从不同的类传递

c# - ListViewItem IsSelected Binding - 适用于 WPF,但不适用于 WinRT

c# - 在 wpf 项目中查找未卡住的画笔

javascript - 如何在按钮单击事件 ASP 后调用 javascript 函数

javascript - 是否可以从字符串模板文字中推断泛型类型

c# - 禁用 MaskedTextBox 声音