[英]Not able to sort by Tag.AlbumArtists in c#
我正在嘗試按藝術家然后按專輯對一組mp3文件進行排序。 在此過程中,我遇到了兩個問題: 一種有效,一種無效。 我的印象是,要完成這兩種工作,我要做的就是一個接一個地使用它們,但是我不能這樣做,因為其中之一不起作用。 請參閱下面的代碼:
foreach (string file in files)
{
TagLib.File fi = TagLib.File.Create(file);
listOfFiles.Add(fi);
}
List<TagLib.File> sortedByBand = listOfFiles.OrderBy(o =>
o.Tag.AlbumArtists).ToList();
List<TagLib.File> sortedBy = listOfFiles.OrderBy(o =>
o.Tag.AlbumArtists).ToList();
列表“ sortedByBand”及其附帶的sort導致以下消息:附加信息:至少一個對象必須實現IComparable。 在此先感謝您提供的所有幫助。
看起來AlbumArtists
是某種枚舉(如字符串數組),無法與其他實例進行比較,因此listOfFiles
不能由此排序。
在這種情況下,您必須將AlbumArtists
轉換為可以與其他實例進行比較的對象。 例如,一個字符串:
List<TagLib.File> sortedByBand = listOfFiles.OrderBy(o =>
String.Join(";", o.Tag.AlbumArtists)).ToList();
當然,這假設具有藝術家{"Pink Floyd", "U2"}
的MP3將在 {"U2", "Pink Floyd"}
的MP3 之前出現。 為避免這種情況,在轉換成單個字符串之前,您需要對藝術家列表本身進行排序。 希望這可以幫助!
我認為您的方法可能無法得出正確的結果,您不應該進行雙重排序,我的LINQ提供了擴展然后進行排序,因為您使用字符串數組作為排序元素,但您會收到該錯誤,我不確定是否可能,但根據其他建議,您可以嘗試
/// sort the array inside the tag.
listOfFiles.ForEach(x =>Array.Sort(o.Tag.AlbumArtists));
///if this does not work try other suggestion
List<TagLib.File> sortedByBand=listOfFiles.OrderBy(o =>o.Tag.AlbumArtists.FirstOrDefault()).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.