gpt4 book ai didi

c# - 仅从多个 CSV 文件中读取特定列

转载 作者:行者123 更新时间:2023-11-30 20:28:41 30 4
gpt4 key购买 nike

我有一个基本上看起来像这样的 CSV 文件:

TransactionID         ProfileID       Date           // more columns here...
somevalue 123123123 somedate
somevalue 123123123 somedate
somevalue 123123123 somedate
somevalue 123123123 somedate
somevalue 123123123 somedate

我想从 CSV 文件的所有这些列中仅提取特定列,即 ProfileID 和 Date,方法是将其映射到现有类,如下所示:

public class MyMappedCSVFile
{
public string ProfileID { get; set; }
public string Date { get; set; }
}

或者将其存储在字典集合中?

我试过这样的:

   public static List<string> ReadInCSV(string absolutePath)
{
List<string> result = new List<string>();
string value;
using (TextReader fileReader = File.OpenText(absolutePath))
{
var csv = new CsvReader(fileReader);
csv.Configuration.HasHeaderRecord = false;
while (csv.Read())
{
for (int i = 0; csv.TryGetField<string>(i, out value); i++)
{
result.Add(value);
}
}
}
return result;
}

但这会从 CSV 文件中删除所有内容,实际上是单个列表中的所有内容,这不是我想要的...

有人可以帮我解决这个问题吗?

最佳答案

标题在这段代码中仍然要跳过,但是通过这段代码,您可以选择要提取的列。如果您使用 StreamReader,它可能会快得多。您将需要一个对象的构造函数。

var temp = File.ReadAllLines(@"C:\myFile.csv");
public List<MyMappedCSVFile>() myExtraction = new List<MyMappedCSVFile>();
foreach(string line in temp)
{
var delimitedLine = line.Split('\t'); //set ur separator, in this case tab

myExtraction.Add(new MyMappedCSVFile(delimitedLine[0], delimitedLine[3]));
}

对象代码:

public class MyMappedCSVFile
{
public string ProfileID { get; set; }
public string Date { get; set; }

public MyMappedCSVFile(string profile, string date)
{
ProfileID = profile;
Date = date;
}
}

关于c# - 仅从多个 CSV 文件中读取特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46932863/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com