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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查歌曲是否尚未添加到播放列表? (“。包含”将不起作用)相关的知识,希望对你有一定的参考价值。

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

    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.");
        }
答案

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

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

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

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

另一答案

1。比较问题?

更改

if (!customPlaylist.Contains(usersInput))

to

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时,它将不包含添加的项目。

以上是关于如何检查歌曲是否尚未添加到播放列表? (“。包含”将不起作用)的主要内容,如果未能解决你的问题,请参考以下文章

如何将歌曲/目录添加到 Python MPD 播放列表

对象+列表中的对象列表?

阅读艺术家列表,使用 Spotipy 将热门歌曲添加到播放列表

Xamarin 表单列表视图添加幻灯片功能

如何在 MPMediaItem 中正确添加音乐编译的谓词

如果链接包含特定文本,则jQuery将类添加到href