C# 如何检查歌曲是否为';是否尚未添加到播放列表中?(“.Contains”不工作)

C# 如何检查歌曲是否为';是否尚未添加到播放列表中?(“.Contains”不工作),c#,C#,这样做的目的是检查用户的响应是否在(歌曲名称)内,而不是基于它将检查其是否已添加到音乐播放列表中(以防止同一首歌曲的多个条目) private void btnAddToPlaylist_单击(对象发送方,事件参数e) { 字符串usersInput=txtBoxSongName.Text+“.mp3”; usersInput=usersInput.ToLower(); List songNames=新列表(新字符串[]{“rock and roll.mp3”、“wake up.mp3”、“fl

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

private void btnAddToPlaylist_单击(对象发送方,事件参数e)
{
字符串usersInput=txtBoxSongName.Text+“.mp3”;
usersInput=usersInput.ToLower();
List songNames=新列表(新字符串[]{“rock and roll.mp3”、“wake up.mp3”、“floating away.mp3”、“inside.mp3”});
if(songNames.Contains(usersInput))
{
var customPlaylist=player.newPlaylist(“自定义播放列表”);
如果(!customPlaylist.Contains(usersInput))
{
customPlaylist.appendItem(player.newMedia(usersInput));
}
其他的
{
Show(“这首歌已经在你的播放列表中了。”);
}
}
其他的
{
Show(“以下歌曲不可用。”);
}

正如@kaenbyu Rin在评论中所说,不清楚什么是
自定义播放列表
。因此,我假设它是一个
列表

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

if (!customPlaylist.Any(x=>x.Contains(userInput)))
注意:如果
customPlaylist
是一个复杂的对象,您应该在该对象中实现Equals和GetHashCode方法,然后
Contains
将正常工作。

1.比较问题? 改变

if (!customPlaylist.Contains(usersInput))

2.新播放列表问题? 2A 第一次查找成功后,您始终会创建一个新的播放列表

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

if (!customPlaylist.Contains(usersInput))
如果
.newPlaylist
不包含您正在空列表中搜索的列表中已有的曲目

2B
添加项目后,曲目是指定为播放机列表的列表?如果不是,则下次向播放机请求时。新建播放列表将不包含添加的项目。

什么是
customPlaylist
?我们无法帮助您处理一些不透明的用户定义类型,除非您向我们透露。Enumerable包含仅适用于主数据类型。若要检查复杂对象,请实现IEqualityComparer接口。[link]包含的内容可以正常工作。请注意拼写和扩展名!和GetHashCode方法应与Equals()一起重写。@aspxsushil完全正确。是的,我忘了它只会重写“customPlaylist”每次检查时都会列出。即使在这之后,我也会收到有关WMP的错误,例如:“IWMPPlaylist”不包含“Any”的定义,并且找不到接受“IWMPPlaylist”类型的第一个参数的可访问扩展方法“Any”(您是否缺少using指令或汇编引用?)
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))