C# 您能告诉我修改此代码以读取csv文件中的下一个单元格吗

C# 您能告诉我修改此代码以读取csv文件中的下一个单元格吗,c#,C#,下面的代码读取CSV文件并查找包含序列号的行,序列号是文件的第一列。然后将该行复制到另一个文件。代码运行良好 我需要读取行的第二个和第三个字段(共12个字段)中的文本,并将它们分配给字符串变量(用于其他用途) 你能帮帮我吗。 我是个新手 找到的列表=新列表(); 弦线; 使用(StreamReader文件=新StreamReader(输入文件名)) { 而((line=file.ReadLine())!=null) { if(line.Contains(“XA2345”)//序列号 { 找到。添

下面的代码读取CSV文件并查找包含序列号的行,序列号是文件的第一列。然后将该行复制到另一个文件。代码运行良好

我需要读取行的第二个和第三个字段(共12个字段)中的文本,并将它们分配给字符串变量(用于其他用途)

你能帮帮我吗。 我是个新手

找到的列表=新列表(); 弦线; 使用(StreamReader文件=新StreamReader(输入文件名)) { 而((line=file.ReadLine())!=null) { if(line.Contains(“XA2345”)//序列号 { 找到。添加(行); 使用(StreamWriter w=File.AppendText(输出文件名)) { //控制台写入线(行); w、 写线(行); w、 冲洗(); } } } }
首先,我将介绍一些使用post解析CSV文件的最佳实践

我还注意到你有一个“find”变量。您是否试图避免输出文件中出现重复行,但代码不完整?在这种假设下,我编写了以下代码

以下是使用语句:

using Microsoft.VisualBasic.FileIO;
using System.Collections.Generic;
using System.IO;
using System.Linq;
以下是主要代码:

List<string> foundLines = new List<string>();
using (TextFieldParser parser = new TextFieldParser(inputFilename))
{
    // Set up the parser for CSV files
    parser.TextFieldType = FieldType.Delimited;
    parser.SetDelimiters(",");

    using (StreamWriter writer = new StreamWriter(outputFilename, false))
    {
        while (!parser.EndOfData)
        {
            string[] values = parser.ReadFields();
            string serialNumber = values[0];

            if (string.Equals(serialNumber, "XA2345"))
            {
                string line = string.Join(",", values.Select(Escape));
                if (foundLines.Contains(line))
                    continue; // Skip writing this line more than once
                else
                    foundLines.Add(line); // Remember this line for later

                writer.WriteLine(line);

                // Do what you need to with the individual column values
                string secondValue = values[1];
                string thirdValue = values[2];
                // ... Etc. ...
            }
        }
    }
}

发布问题前可能重复@FrancescoC。请礼貌地使用顶部搜索栏搜索答案
static private string Escape(string s)
{ 
    const string QUOTE = "\""; 
    const string ESCAPED_QUOTE = "\"\""; 
    char[] CHARACTERS_THAT_MUST_BE_QUOTED = { ',', '"', '\n' };
    if (s.Contains(QUOTE))
        s = s.Replace(QUOTE, ESCAPED_QUOTE);
    if (s.IndexOfAny(CHARACTERS_THAT_MUST_BE_QUOTED) > -1)
        s = QUOTE + s + QUOTE;
    return s;
}