手动解析 CSV 实际上非常棘手。您最好重用TextFieldParser(添加对Microsoft.VisualBasic程序集的引用)。
using Microsoft.VisualBasic.FileIO;
....
string[,] parsedCsv;
List<string[]> csvLines = new List<string[]>();
TextFieldParser parser = new TextFieldParser(new FileStream(guid.ToString(), FileMode.Open));
parser.Delimiters = new string[] { "," };
parser.TextFieldType = FieldType.Delimited;
int maxLines = 200, lineCount = 0;
try
{
    while (!parser.EndOfData && lineCount++ < maxLines)
    {
        csvLines.Add(parser.ReadFields());
    }
}
catch (MalformedLineException)
{
    Console.WriteLine("Line Number: {0} Value: {1}", parser.ErrorLineNumber, parser.ErrorLine);
    return;
}
parsedCsv = new string[csvLines.Count, csvLines[0].Length];
for (int i = 0; i < csvLines.Count; i++)
{
    for (int j = 0; j < csvLines[i].Length; j++)
    {
        parsedCsv[i, j] = csvLines[i][j];
    }
}
我在这里假设输出将是一个二维字符串数组 - 您可能需要根据您所追求的内容调整此代码,特别是如果您必须应对每行不具有相同的情况字段数(可能不太可能,但仍然如此)。
真正有用的TextFieldParser是它可以处理不同类型的分隔符。parser.Delimiters = new string[] { "\t" };例如,通过设置,同样的代码可以解析制表符分隔的文本。