C# 将c中文本文件中除特定行以外的行复制到新文件中#

C# 将c中文本文件中除特定行以外的行复制到新文件中#,c#,winforms,C#,Winforms,我正在尝试将数据从textfile1复制到新的textfile(textfile2)。但我想排除一条特定的线。我找到了一种方法来获取要排除的数据所在的行 我在这里做的是检查“testfile.txt”是否包含用户从textbox1输入的字符串。如果文件确实包含上述输入,它将检查“textfile1”中是否也有相同的输入 stringold=@“textfile1.txt”; 字符串new=@“textfile2.txt”; 字符串test=@“testfile.txt”; string[]lin

我正在尝试将数据从textfile1复制到新的textfile(textfile2)。但我想排除一条特定的线。我找到了一种方法来获取要排除的数据所在的行

我在这里做的是检查“testfile.txt”是否包含用户从textbox1输入的字符串。如果文件确实包含上述输入,它将检查“textfile1”中是否也有相同的输入

stringold=@“textfile1.txt”;
字符串new=@“textfile2.txt”;
字符串test=@“testfile.txt”;
string[]line=File.ReadAllLines(测试);
for(int i=0;i
现在我要做的是复制textfile1中的所有内容,除了找到输入数据的那一行

样本数据

textfile1.txt(id、项目、价格)

0001,苹果,5

0002,香蕉,3

0003,芒果,6

textbox1中的用户输入
0002

假设输出

textfile2.txt

0001,苹果,5

0003,芒果,6

“为什么不直接从文件中删除那一行呢?”嗯,我试过了,但是的,我有太多的问题,所以我试着这样做


我一直在尝试各种各样的方法,但我似乎什么都做不到:(有什么建议吗?任何形式的帮助都将不胜感激!

您有太多的循环。您应该能够在一个循环中完成它:

string oldFile = @"textfile1.txt";
string newFile = @"textfile2.txt";
string test = @"testfile.txt";

string[] lines = File.ReadAllLines(oldFile);

using (StreamWriter w = File.AppendText(newFile))
{
    foreach(var line in lines) {
        if (!line.Contains(textbox1.Text))
        {
            w.WriteLine(line);
        }
    }
}
或者,您也可以使用LINQ过滤掉不需要的行,然后一次将它们全部写出来:

var newLines = File.ReadLines(oldFile).Where(l => !l.contains(textbox1.Text));
File.WriteAllLines(newFile, newLines);
var newLines = File.ReadLines(oldFile).Where(l => !l.contains(textbox1.Text));
File.WriteAllLines(newFile, newLines);