【发布时间】:2014-11-13 09:40:42
【问题描述】:
我有一个用竖线(|)分隔的 csv 文件。我正在使用以下代码行阅读它:
IEnumerable<string[]> lineFields = File.ReadAllLines(FilePath).Select(line => line.Split('|'));
现在,我需要将其绑定到 GridView。所以我正在创建一个动态DataTable,如下所示:
DataTable dt = new DataTable();
int i = 0;
foreach (string[] order in lineFields)
{
if (i == 0)
{
foreach (string column in order)
{
DataColumn _Column = new DataColumn();
_Column.ColumnName = column;
dt.Columns.Add(_Column);
i++;
//Response.Write(column);
//Response.Write("\t");
}
}
else
{
int j = 0;
DataRow row = dt.NewRow();
foreach (string value in order)
{
row[j] = value;
j++;
//Response.Write(column);
//Response.Write("\t");
}
dt.Rows.Add(row);
}
//Response.Write("\n");
}
这很好用。但我想知道是否有更好的方法将IEnumerable<string[]> 转换为DataTable。我需要阅读很多这样的 CSV,所以我认为上面的代码可能存在性能问题。
【问题讨论】:
-
如果它用
|分隔,那么它不是CSV。它们将是逗号分隔值。 -
@Jodrell 也可以参考字符分隔值
-
有一些自动生成软件可以创建这些文件。
-
@DarrenYoung,你有什么参考资料来支持它,它对我来说是新的,通过快速搜索不是很明显?
-
你能假设每一行的列数都和第一行一样吗?