C# 如何从KnownFolders.MusicLibrary存储文件夹获取所有唱片艺术家?

C# 如何从KnownFolders.MusicLibrary存储文件夹获取所有唱片艺术家?,c#,windows,windows-phone-8,windows-8.1,windows-phone-8.1,C#,Windows,Windows Phone 8,Windows 8.1,Windows Phone 8.1,大家好,我正在尽可能快速准确地找到所有专辑艺术家的名字 然而,我意识到在Windows运行时上没有API可以让我们像在WP8中那样轻松地提取所有名称 因为文件夹中可能有子文件夹,所以我创建了一个递归方法,每当IStorageItem不是StorageFile类型时,它都会调用自己。基本上,我会钻取每个文件夹,直到我找到一个音频文件,然后从那里我可以提取文件属性,比如专辑艺术家。之后,我调用相册艺术家列表上的Distinct(),因为每个音频文件中可以有多个相同的艺术家 正如您可能知道的那样,这似

大家好,我正在尽可能快速准确地找到所有专辑艺术家的名字

然而,我意识到在Windows运行时上没有API可以让我们像在WP8中那样轻松地提取所有名称

因为文件夹中可能有子文件夹,所以我创建了一个递归方法,每当IStorageItem不是StorageFile类型时,它都会调用自己。基本上,我会钻取每个文件夹,直到我找到一个音频文件,然后从那里我可以提取文件属性,比如专辑艺术家。之后,我调用相册艺术家列表上的Distinct(),因为每个音频文件中可以有多个相同的艺术家

正如您可能知道的那样,这似乎效率很低,使用大量音乐完成所有递归调用需要相当长的时间。我相信有更好的方法,如果有人知道更好的方法,我会寻求帮助


谢谢。

可用的更快的方法是使用
KnownFolders.MusicLibrary.GetFoldersAsync(CommonFolderQuery.GroupByArtist)
获取设备上的所有音乐文件(如概述),并将其分组到每个艺术家的虚拟文件夹中。这是一个设备深度搜索,因此您不必进行任何递归枚举


一旦你有了文件夹列表,你就可以用同样的逻辑从结果中的每个文件夹中找到艺术家的名字。

类似的问题似乎也出现了。您好,谢谢您的评论。这个链接非常有用。