如何检查歌曲是否尚未添加到播放列表中? (“。包含”将不起作用)

时间:2019-10-19 04:24:27

标签: c#

这样做的目的是要检查用户的响应是否在(歌曲名称)之内,而不是基于它会检查是否已将其添加到音乐播放列表中(以防止同一首歌曲多次输入)

    private void btnAddToPlaylist_Click(object sender, EventArgs e)
    {
        string usersInput = txtBoxSongName.Text + ".mp3";
        usersInput = usersInput.ToLower();

        List<string> songNames = new List<string>(new string[] { "rock and roll.mp3", "wake up.mp3", "floating away.mp3", "inside.mp3" });

        if (songNames.Contains(usersInput))
        {
            var customPlaylist = player.newPlaylist("Custom Playlist", "");

            if (!customPlaylist.Contains(usersInput))
            {
                customPlaylist.appendItem(player.newMedia(usersInput));
            }
            else
            {
                MessageBox.Show("This song is already in your playlist.");
            }
        }
        else
        {
            MessageBox.Show("The following song is not available.");
        }

2 个答案:

答案 0 :(得分:0)

正如@Kaenbyou Rin在评论中所说,尚不清楚customPlaylist是什么。因此,我认为它是List<string>

Contains方法仅检查列表是否包含要传递给它的内容的完全匹配。因此,如果userInputcustomPlaylist中字符串的一部分,则可以像这样检查它:

if (!customPlaylist.Any(x=>x.Contains(userInput)))

注意::如果customPlaylist是一个复杂的对象,则应在该对象中实现Equals和GetHashCode方法,然后Contains将可以正常工作。

答案 1 :(得分:0)

1。比较问题?

更改

if (!customPlaylist.Contains(usersInput))

if (!customPlaylist.Any(m=> m.Title == usersInput)) //Title, Name, or whatever your use as the Id.

2。新的播放列表问题?

2A

第一次查找成功后,您始终会创建一个新的播放列表。

var customPlaylist = player.newPlaylist("Custom Playlist", "");

if (!customPlaylist.Contains(usersInput))

如果.newPlaylist在列表中不包含曲目,则您正在空列表中搜索。

2B

appendItem之后,曲目被分配为播放器列表吗?如果不是,那么下次您向播放器询问.newPlaylist时,它将不包含添加的项目。