|
@@ -2914,29 +2914,30 @@ namespace Emby.Server.Implementations.Data
|
|
|
private string GetOrderByText(InternalItemsQuery query)
|
|
|
{
|
|
|
var orderBy = query.OrderBy;
|
|
|
- if (string.IsNullOrEmpty(query.SearchTerm))
|
|
|
+ bool hasSimilar = query.SimilarTo != null;
|
|
|
+ bool hasSearch = !string.IsNullOrEmpty(query.SearchTerm);
|
|
|
+
|
|
|
+ if (hasSimilar || hasSearch)
|
|
|
{
|
|
|
- int oldLen = orderBy.Count;
|
|
|
- if (oldLen == 0 && query.SimilarTo != null)
|
|
|
+ List<(string, SortOrder)> prepend = new List<(string, SortOrder)>(4);
|
|
|
+ if (hasSearch)
|
|
|
{
|
|
|
- var arr = new (string, SortOrder)[oldLen + 2];
|
|
|
- orderBy.CopyTo(arr, 0);
|
|
|
- arr[oldLen] = ("SimilarityScore", SortOrder.Descending);
|
|
|
- arr[oldLen + 1] = (ItemSortBy.Random, SortOrder.Ascending);
|
|
|
- query.OrderBy = arr;
|
|
|
+ prepend.Add(("SearchScore", SortOrder.Descending));
|
|
|
+ prepend.Add((ItemSortBy.SortName, SortOrder.Ascending));
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- query.OrderBy = new[]
|
|
|
+
|
|
|
+ if (hasSimilar)
|
|
|
{
|
|
|
- ("SearchScore", SortOrder.Descending),
|
|
|
- (ItemSortBy.SortName, SortOrder.Ascending)
|
|
|
- };
|
|
|
- }
|
|
|
-
|
|
|
+ prepend.Add(("SimilarityScore", SortOrder.Descending));
|
|
|
+ prepend.Add((ItemSortBy.Random, SortOrder.Ascending));
|
|
|
+ }
|
|
|
|
|
|
- if (orderBy.Count == 0)
|
|
|
+ var arr = new (string, SortOrder)[prepend.Count + orderBy.Count];
|
|
|
+ prepend.CopyTo(arr, 0);
|
|
|
+ orderBy.CopyTo(arr, prepend.Count);
|
|
|
+ orderBy = query.OrderBy = arr;
|
|
|
+ }
|
|
|
+ else if (orderBy.Count == 0)
|
|
|
{
|
|
|
return string.Empty;
|
|
|
}
|