C# 删除csv文件中的特定行,该csv文件由listbox-WinC表单中选定项中的字符串定义

C# 删除csv文件中的特定行,该csv文件由listbox-WinC表单中选定项中的字符串定义,c#,winforms,visual-studio-2010,csv,C#,Winforms,Visual Studio 2010,Csv,我有一个csv文件,如下所示: NAME,GAMES PLAYED, GAMES WON, GAMES LOST, AVG SCORE PLAYER1,0,0,0,0 PLAYER2,0,0,0,0 PLAYER3,0,0,0,0 PLAYER4,0,0,0,0 PLAYER5,0,0,0,0 listbox lsbSelectName将填充列表PLAYER1、PLAYER2等。我试图实现的是从listbox中选择一个名称,当按下delete按钮时,我希望它读取csv文件中的行,如果一行包含所

我有一个csv文件,如下所示:

NAME,GAMES PLAYED, GAMES WON, GAMES LOST, AVG SCORE
PLAYER1,0,0,0,0
PLAYER2,0,0,0,0
PLAYER3,0,0,0,0
PLAYER4,0,0,0,0
PLAYER5,0,0,0,0
listbox lsbSelectName将填充列表PLAYER1、PLAYER2等。我试图实现的是从listbox中选择一个名称,当按下delete按钮时,我希望它读取csv文件中的行,如果一行包含所选的播放器名称,它将删除整行。我已经试了两天了,但似乎把自己弄糊涂了。以下是迄今为止的代码:

private void btnDeletePlayer_Click(object sender, EventArgs e)
    {
        string playerStats = "C:\\Users\\PC\\Desktop\\Work\\Visual Studio\\dbstats\\dbstats\\bin\\Debug\\playerStats.csv";
        string lineToDelete = lsbSelectName.ToString();

        if (File.Exists(playerStats))
        {
            string[] lines = File.ReadAllLines(@"playerStats.csv");

            if (lines.Contains(lineToDelete))
            {
                lines.Skip(50);                    
            }
            else
            {                    
                MessageBox.Show("That name does not exist, Try again");
            }
            using (StreamWriter sw = new StreamWriter(playerStats, true))
            {
                sw.WriteLine(lines);
                MessageBox.Show("Player: " + lineToDelete + "Has been deleted");
                sw.Close();
            }
        }
        else
        {
            MessageBox.Show("playerStats.csv does not exist, Check Filepath");
        }
        gamesToolStripMenuItem.Visible = true;
        lbNewPlayer.Visible = false;
        tbNewPlayerName.Visible = false;
        btnAddNewPlayer.Visible = false;
    }
非常感谢您的帮助。谢谢。

我的解决方案:

我在路径中做了一些更改,得到了lineToDelete字符串:

阅读课文 列举所有行 按“,”字符分割 若第一个字符串等于玩家名称,则跳过它

    string playerStats = "D:\\playerStats.csv";
    string lineToDelete = listBox1.SelectedItem.ToString();

    if (File.Exists(playerStats))
    {
        string[] lines = File.ReadAllLines(playerStats);

        using (StreamWriter sw = new StreamWriter(playerStats, false))
        {
            foreach (var line in lines)
            {
                string[] parts = line.Split(',');
                if (parts[0] != lineToDelete)
                {
                    sw.WriteLine(line);
                }
                else
                {
                    MessageBox.Show("Player: " + lineToDelete + "Has been deleted");
                }
            }
        }
    }
    else
    {
        MessageBox.Show("playerStats.csv does not exist, Check Filepath");
    }