首页 > 解决方案 > 如何在c#中从csv中提取标题

问题描述

我在 c# 中将几个 csv 文件加载并拆分为两个列表。现在我还需要使用 ; 从第一行中提取标题。作为delmiter. 我正在尝试使用 .Skip(1) 命令,但这只会跳过(显然),但我需要提取标题,并在完成其余数据的工作后再次将其添加为第一行。

这是我到目前为止所尝试的:

string[] fileNames = Directory.GetFiles(@"read\", "*.csv");
for (int i = 0; i < fileNames.Length; i++)
{
    string file = @"read\" + Path.GetFileName(fileNames[i]);
    var lines = File.ReadLines(file).Skip(1);
    (List<string> dataA, List<string> dataB) = SplitAllTodataAAnddataB(lines);
    var rowLog = 0;
    foreach (var line in dataA)
    {
       // Variablen für lines
       string[] entries = line.Split(';');
       rowLog++;
       Helper.checkdataAString(entries[0].ToLower(), "abc", rowLog);
       Helper.checkdataAString(entries[1].ToLower(), "firstname", rowLog);
       Helper.checkdataAString(entries[2].ToLower(), "lastname", rowLog);
       Helper.checkdataAString(entries[4].ToLower(), "gender", rowLog);
       Helper.checkdataAString(entries[5].ToLower(), "id", rowLog);
       Helper.checkdataAString(entries[3], "date", rowLog);
       Helper.drawTextProgressBar("loaded rown", rowLog, dataA.Count());
    }
    Console.WriteLine("\nencryypting data");
    var output = new List<string>();
    foreach (var line in dataA)
    {
       try
       {
          string[] entries = line.Split(';');
          string abc = entries[0].ToLower();
          string firstName = koeln.GetPhonetics(entries[1]).ToLower();
          string lastName = koeln.GetPhonetics(entries[2]).ToLower();
          string date = entries[3];
          //Hier werden die drei vorherigen Variablen konkatiniert.
          string NVG = FirstName + "_" + LastName + "_" + BirthDate;
          string gender = entries[4].ToLower();
          string age = Helper.Left(Convert.ToString(20171027 - Convert.ToInt32(entries[3])), 2);
          string zid = Guid.NewGuid().ToString();
          string fid = entries[5].ToLower();
          rowdataA++;
          output.Add($"{abc}; {NVG}; {gender}; {age}; {zid}; {fid}");
          Helper.drawTextProgressBar("encrypted rows.", rowdataA, dataA.Count());
       }
       catch { rowdataA++; }
    }
    File.WriteAllLines(fileTest, output);
}

我对开发有点陌生,所以我只是在尝试,任何帮助都将不胜感激。

标签: c#.netcsv

解决方案


您可以这样读取文件:

string file = @"read\" + Path.GetFileName(fileNames[i]);
var content = File.ReadLines(file);

var header = content.ElementAt(0);
var lines = content.Skip(1);

推荐阅读