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

标签 c# asp.net asp.net-mvc file csv

我有一个基本上看起来像这样的 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/

相关文章:

javascript - 如何使用 Twilio 调用实时语音电话而不是在接听电话时只播放 MP3?

asp.net-mvc - MVC Dropdownlist如何在编辑时保留保存的值

c# - 在 foreach 循环中修改列表

c# - ASP.Net 列表框 : maintain listbox scrolling position after partial postback (not site scrolling position! )

c# - 使用加密的 SQL Server 2008 存储过程的权限问题

javascript - 如何使用 JavaScript 获取元素/组件名称?

c# - 编辑 View 中不可编辑的 ViewModel 属性

c# - 我怎样才能得到字符串数组的组合?

c# - 获得刚好足以包围旋转矩形的非旋转矩形

c# - 如何增加或减少 C# 中的标记值?