diff options
| author | Lampan-git <22211983+Lampan-git@users.noreply.github.com> | 2025-03-05 16:59:31 +0100 |
|---|---|---|
| committer | Lampan-git <22211983+Lampan-git@users.noreply.github.com> | 2025-03-05 16:59:31 +0100 |
| commit | 4e3d7383f5cb85eb408f9d026b6da1986925df17 (patch) | |
| tree | b34062a1ea918da30e0c58c7ad92dd24bd7a4209 | |
| parent | d28ee96f06f57483c24f5cfcb14152c6b79a9c7d (diff) | |
Change GetPeople PeopleBaseItemMap code to query
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/PeopleRepository.cs | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs index 77b00a41a..cca25de73 100644 --- a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs +++ b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs @@ -42,25 +42,23 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I // Include PeopleBaseItemMap if (!filter.ItemId.IsEmpty()) { - var people = dbQuery.ToArray(); - var peopleIds = people.Select(p => p.Id).ToArray(); - - var mappings = context.PeopleBaseItemMap - .AsNoTracking() - .Where(m => peopleIds.Contains(m.PeopleId) && m.ItemId == filter.ItemId) - .ToDictionary(m => m.PeopleId); - - return people.Select(p => - { - var personInfo = Map(p); - if (mappings.TryGetValue(p.Id, out var mapping)) + var query = dbQuery + .GroupJoin( + context.PeopleBaseItemMap.AsNoTracking().Where(m => m.ItemId == filter.ItemId), + person => person.Id, + mapping => mapping.PeopleId, + (person, mappings) => new { Person = person, Mapping = mappings.FirstOrDefault() }); + + return query + .AsEnumerable() + .Select(p => { - personInfo.Role = mapping.Role; - personInfo.SortOrder = mapping.SortOrder; - } - - return personInfo; - }).ToArray(); + var personInfo = Map(p.Person); + personInfo.Role = p.Mapping?.Role; + personInfo.SortOrder = p.Mapping?.SortOrder; + return personInfo; + }) + .ToArray(); } return dbQuery.AsEnumerable().Select(Map).ToArray(); |
