C#如何使用CsvHelper从CSV文件中删除某些行并将其保存为新的CSV?

C#如何使用CsvHelper从CSV文件中删除某些行并将其保存为新的CSV?,c#,csv,csvhelper,C#,Csv,Csvhelper,我正试图从我的CSV文件中删除某些行,但由于我是C#新手,我不知道如何正确执行 我有这段代码,可以加载一个CSV文件并通过它 using (var reader = new StreamReader(@"Data\myCSV.csv")) using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) { var records = csv.Ge

我正试图从我的CSV文件中删除某些行,但由于我是C#新手,我不知道如何正确执行

我有这段代码,可以加载一个CSV文件并通过它

using (var reader = new StreamReader(@"Data\myCSV.csv"))
        using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
        {
            var records = csv.GetRecords<Books>();
            var books = records.ToImmutableArray();
            for (int i = 0; i < books.Length; ++i)
            {
                if (books[i].title == "someTitle")
                {
                    //Delete this row
                }
            }
        //Overwrite old csv
        }
使用(var reader=newstreamreader(@“Data\myCSV.csv”))
使用(var csv=new CsvReader(reader,CultureInfo.InvariantCulture))
{
var records=csv.GetRecords();
var books=records.ToImmutableArray();
for(int i=0;i
但是我找不到删除指定行的代码

感谢您的帮助。

来自:

CsvHelper是仅转发的,因此您需要通读现有文件并编写一个新文件


有太多的方法不专门使用CsvHelper来实现这一点,因此我列出了一些您可以尝试的建议

  • 最简单的解决方案,无需详细说明,如果文件足够小(以MB为单位),请将所有行读入列表或IEnumerable,然后可以对该集合执行任何操作,并将集合写回文件

  • 如果你是c#新手,在着手实际项目之前,尝试一下所有基本的文件操作。在youtube上观看教程或视频 文本文件: 文件IO:

  • 在编写大型程序之前,请使用LinqPad或dotnetfiddle等免费工具尝试小代码段

  • 一旦您对使用.Net库处理文件感到满意,您就可以考虑使用这样的库,这样可以非常轻松地使用具有许多可配置选项的文件。他们的网站上也有很多用于处理文件的教程

  • 您可以将所有记录提取到内存中,然后将它们写回文件

    列出记录;
    使用(var reader=newstreamreader(@“Data\myCSV.csv”))
    使用(var csv=new CsvReader(reader,CultureInfo.InvariantCulture))
    {
    records=csv.GetRecords().ToList();
    for(int i=0;i
    对于较大的文件,您可能希望一次读取一条记录到内存中,然后立即将其写回临时文件。然后删除原始文件并重命名临时文件

    使用(var reader=newstreamreader(@“Data\myCSV.csv”))
    使用(var csv=new CsvReader(reader,CultureInfo.InvariantCulture))
    使用(var writer=newstreamwriter(@“Data\myCSV\u Temp.csv”))
    使用(var csvWriter=new csvWriter(writer,CultureInfo.InvariantCulture))
    {
    图书记录;
    csv.Read();
    csv.ReadHeader();
    csvWriter.WriteHeader(书籍类型);
    而(csv.Read())
    {
    record=csv.GetRecord();
    if(record.Title!=“someTitle”)
    {
    csvWriter.NextRecord();
    CSV编写器写入记录(记录);
    }                    
    }                
    }
    删除(@“Data\myCSV.csv”);
    移动(@“Data\myCSV_Temp.csv”,@“Data\myCSV.csv”);
    
    我遇到过这篇文章,但我不知道如何编写新文件,或者如何浏览现有文件。那么,也许你应该把你的问题重新表述一下。你熟悉CSVWriter吗?我相信它是同一个库的一部分。是什么让你认为你可以从一个不可变的数组中删除一些东西?你明白“不可变”这个词在这里的意思吗?如果要从数据中删除记录,为什么要将数据转换为不可变数组?你的问题不清楚。它甚至似乎与CSV没有任何关系,更不用说CsvHelper库了。请改进它。