2
0
Эх сурвалжийг харах

Replace LINQ with more direct access method

Also rework documentation
Said Aroua 1 жил өмнө
parent
commit
71fc475bb3

+ 14 - 17
Emby.Server.Implementations/Sorting/AlbumArtistComparer.cs

@@ -1,5 +1,4 @@
 using System;
-using System.Linq;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Audio;
@@ -9,37 +8,35 @@ using MediaBrowser.Model.Querying;
 namespace Emby.Server.Implementations.Sorting
 {
     /// <summary>
-    /// Class AlbumArtistComparer.
+    /// Allows comparing artists of albums. Only the first artist of each album is considered.
     /// </summary>
     public class AlbumArtistComparer : IBaseItemComparer
     {
         /// <summary>
-        /// Gets the name.
+        /// Gets the item type this comparer compares.
         /// </summary>
-        /// <value>The name.</value>
         public ItemSortBy Type => ItemSortBy.AlbumArtist;
 
         /// <summary>
-        /// Compares the specified x.
+        /// Compares the specified arguments on their primary artist.
         /// </summary>
-        /// <param name="x">The x.</param>
-        /// <param name="y">The y.</param>
-        /// <returns>System.Int32.</returns>
+        /// <param name="x">First item to compare.</param>
+        /// <param name="y">Second item to compare.</param>
+        /// <returns>Zero if equal, else negative or positive number to indicate order.</returns>
         public int Compare(BaseItem? x, BaseItem? y)
         {
-            return string.Compare(GetValue(x), GetValue(y), StringComparison.OrdinalIgnoreCase);
+            return string.Compare(GetFirstAlbumArtist(x), GetFirstAlbumArtist(y), StringComparison.OrdinalIgnoreCase);
         }
 
-        /// <summary>
-        /// Gets the value.
-        /// </summary>
-        /// <param name="x">The x.</param>
-        /// <returns>System.String.</returns>
-        private static string? GetValue(BaseItem? x)
+        private static string? GetFirstAlbumArtist(BaseItem? x)
         {
-            var audio = x as IHasAlbumArtist;
+            if (x is IHasAlbumArtist audio
+                && audio.AlbumArtists.Count != 0)
+            {
+                return audio.AlbumArtists[0];
+            }
 
-            return audio?.AlbumArtists.FirstOrDefault();
+            return null;
         }
     }
 }