【发布时间】:2015-08-05 01:34:51
【问题描述】:
我正在尝试查找如何使用 linq 读取 csv 文件的示例。我的问题是到目前为止我找到的示例,csv 文件存储在本地机器上,我正在从 azure 中提取 csv 文件。这是我到目前为止找到的示例:
var stuff = from l in File.ReadLines(filename)
let x = l.Split(new[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Skip(1)
.Select(s => int.Parse(s))
select new
{
Sum = x.Sum(),
Average = x.Average()
};
问题在于我从 Azure 中提取,我必须使用 DownloadToStream 并将文件移动到 MemoryStream。当我必须使用 MemoryStream 时,应该用什么替换“File.ReadLines(filename)”?
【问题讨论】:
-
除非您可以控制生成 CSV 的代码,否则您可能需要一个专用的 CSV 库用于解析步骤。谈到 CSV 时,陷阱比您想象的要多得多
-
看看TextFieldParser - 它可以处理流和处理 CSV 文件。它在
Microsoft.VisualBasic.FileIO命名空间中(是的,尽管它的名字也可以被 C# 使用)。参见TextFieldPaser Constructor (Stream)。 -
对于 TextFieldParser,它是否还可以确认文件确实是 csv 而不是常规文本文件以及可能出现的任何其他陷阱?如果没有,有人可以推荐一个好的 csv 库来解决这些问题并提供良好的性能吗?
-
@user1790300 - 确认文件确实是 CSV 文件是什么意思?基于什么标准?
-
@Tim,有没有办法确认格式确实是 csv?
标签: c# linq csv azure-blob-storage