Try change to a custom distinct logic for recent songs
This commit is contained in:
parent
5e662f8cdb
commit
eff5ac478f
@ -46,13 +46,24 @@ public class UserDataController : BaseController<UserDataController>
|
|||||||
var recentSongs = context.SongPlayData
|
var recentSongs = context.SongPlayData
|
||||||
.Where(datum => datum.Baid == request.Baid)
|
.Where(datum => datum.Baid == request.Baid)
|
||||||
.AsEnumerable()
|
.AsEnumerable()
|
||||||
.DistinctBy(datum => datum.SongId)
|
|
||||||
.OrderByDescending(datum => datum.PlayTime)
|
.OrderByDescending(datum => datum.PlayTime)
|
||||||
.ThenByDescending(datum => datum.SongNumber)
|
.ThenByDescending(datum => datum.SongNumber)
|
||||||
.Select(datum => datum.SongId)
|
.Select(datum => datum.SongId)
|
||||||
.Take(10)
|
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|
||||||
|
// Use custom implementation as distictby cannot guarantee preserved element
|
||||||
|
var recentSet = new SortedSet<uint>();
|
||||||
|
foreach (var id in recentSongs)
|
||||||
|
{
|
||||||
|
recentSet.Add(id);
|
||||||
|
if (recentSet.Count == 10)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
recentSongs = recentSet.ToArray();
|
||||||
|
|
||||||
var userData = new UserDatum();
|
var userData = new UserDatum();
|
||||||
if (context.UserData.Any(datum => datum.Baid == request.Baid))
|
if (context.UserData.Any(datum => datum.Baid == request.Baid))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user