diff --git a/Emby.Server.Implementations/Library/UserViewManager.cs b/Emby.Server.Implementations/Library/UserViewManager.cs index e717d2b0..9ea377a7 100644 --- a/Emby.Server.Implementations/Library/UserViewManager.cs +++ b/Emby.Server.Implementations/Library/UserViewManager.cs @@ -145,6 +145,11 @@ namespace Emby.Server.Implementations.Library var sorted = _libraryManager.Sort(list, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).ToList(); var orders = user.GetPreferenceValues(PreferenceKind.OrderedViews); + // Create a lookup dictionary for efficient and reliable ordering + var sortedIndexLookup = sorted + .Select((item, index) => new { item, index }) + .ToDictionary(x => x.item.Id, x => x.index); + return list .OrderBy(i => { @@ -158,7 +163,7 @@ namespace Emby.Server.Implementations.Library return index == -1 ? int.MaxValue : index; }) - .ThenBy(sorted.IndexOf) + .ThenBy(i => sortedIndexLookup.TryGetValue(i.Id, out var sortIndex) ? sortIndex : int.MaxValue) .ThenBy(i => i.SortName) .ToArray(); }