C#如何使用CsvHelper从CSV文件中删除某些行并将其保存为新的CSV?
我正试图从我的CSV文件中删除某些行,但由于我是C#新手,我不知道如何正确执行 我有这段代码,可以加载一个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
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来实现这一点,因此我列出了一些您可以尝试的建议
您可以将所有记录提取到内存中,然后将它们写回文件
列出记录;
使用(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库了。请改进它。