如何使用C#将csv文件中的某些行复制到新文件中?

如何使用C#将csv文件中的某些行复制到新文件中?,c#,csv,C#,Csv,我正在使用C#来制作一个小型应用程序,它可以自动执行一些手动过程。我有一个CSV文件,我必须搜索第二列(名称为“Status”),如果状态为“clear”,则我不需要此行,否则我需要将此行复制到另一个文件中并保存聚合文件。此外,我还想知道如何(自动)删除c#中csv文件的某些列。以下是我到目前为止所做的:(第一个按钮是“显示原件”,第二个按钮是“更改并保存” 名称空间AppExcel { 公共部分类Form1:Form { 公共表格1() { 初始化组件(); } 私有静态列表ReadAndPa

我正在使用C#来制作一个小型应用程序,它可以自动执行一些手动过程。我有一个CSV文件,我必须搜索第二列(名称为“Status”),如果状态为“clear”,则我不需要此行,否则我需要将此行复制到另一个文件中并保存聚合文件。此外,我还想知道如何(自动)删除c#中csv文件的某些列。以下是我到目前为止所做的:(第一个按钮是“显示原件”,第二个按钮是“更改并保存”

名称空间AppExcel
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有静态列表ReadAndParseData(字符串路径、字符分隔符)
{
var parsedData=新列表();
使用(var sr=新的StreamReader(路径))
{
弦线;
而((line=sr.ReadLine())!=null)
{
字符串[]行=行。拆分(分隔符);
string[]column=line.Split('\n');
parsedData.Add(行);
}
}
返回数据;
}
私有void DrawGridView(列表解析数据)
{
dataGridView1.ColumnCount=47;
对于(int i=0;i<47;i++)
{
var sb=新的StringBuilder(解析数据[0][i]);
(b)替换(“,”);
替换(“\”,“);
dataGridView1.Columns[i].Name=sb.ToString();
}
foreach(parsedData中的字符串[]行)
{
dataGridView1.Rows.Add(row);
}
dataGridView1.Rows.Remove(dataGridView1.Rows[0]);
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
列出parsedData=ReadAndParseData(@“C:/Export Data.csv”、“,”);
DrawGridView(parsedData);
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
列出parsedData=ReadAndParseData(@“C:/Export Data.csv”、“,”);
foreach(parsedData中的字符串[]行)
{
if(行!=parsedData[0])
{ 
//在这里插入什么??
}
}
}
私有无效按钮3\u单击(对象发送者,事件参数e)
{
}
}
}
您可以简单地执行(如果您的文件不是很大:在这种情况下,您必须使用streamreader)

如果你想保留第一行(标题),你可以这样做

var retainedLines = File.ReadAllLines(@"C:/Export Data.csv")
                        .Where((x, i) => i == 0 || x.Split(',')[1] != "clear");//i is the index, so the first line will have i == 0
然后保存到另一个文件

File.WriteAllLines(<targetPath>, retainedLines);
File.writeAllines(,保留行);

如果要删除同一文件中的行,则targetPath必须仅为现有行…

一行以读取文件、检查行、拆分为列、检查清除,然后写入输出

File.WriteAllLines(outPath, 
                File
                .ReadAllLines(inPath)
                .Where(line => !line.Split(seperator)[colNum].Equals("clear")));
File.WriteAllLines(<targetPath>, retainedLines);
File.WriteAllLines(outPath, 
                File
                .ReadAllLines(inPath)
                .Where(line => !line.Split(seperator)[colNum].Equals("clear")));