这样做的目的是要检查用户的响应是否在(歌曲名称)之内,而不是基于它会检查是否已将其添加到音乐播放列表中(以防止同一首歌曲多次输入)
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.");
}
答案 0 :(得分:0)
正如@Kaenbyou Rin在评论中所说,尚不清楚customPlaylist
是什么。因此,我认为它是List<string>
。
Contains
方法仅检查列表是否包含要传递给它的内容的完全匹配。因此,如果userInput
是customPlaylist
中字符串的一部分,则可以像这样检查它:
if (!customPlaylist.Any(x=>x.Contains(userInput)))
注意::如果customPlaylist
是一个复杂的对象,则应在该对象中实现Equals和GetHashCode方法,然后Contains
将可以正常工作。
答案 1 :(得分:0)
更改
if (!customPlaylist.Contains(usersInput))
到
if (!customPlaylist.Any(m=> m.Title == usersInput)) //Title, Name, or whatever your use as the Id.
第一次查找成功后,您始终会创建一个新的播放列表。
var customPlaylist = player.newPlaylist("Custom Playlist", "");
if (!customPlaylist.Contains(usersInput))
如果.newPlaylist
在列表中不包含曲目,则您正在空列表中搜索。
appendItem之后,曲目被分配为播放器列表吗?如果不是,那么下次您向播放器询问.newPlaylist时,它将不包含添加的项目。