Dans mon application .NET Core / EF Core, j'ai un modèle avec une liste imbriquée d'objets enfants. Lorsque je récupère une instance, j'ai besoin que la liste imbriquée soit ordonnée par l'une des propriétés de l'enfant. En examinant des questions similaires et des problèmes signalés sur EF Core, je comprends que je ne peux pas commander la liste imbriquée lors de l'extraction de l'instance. Alors maintenant, j'essaye de le trier une fois chargé en mémoire. mais ici je ne réussis pas non plus.
J'utilise un modèle de référentiel pour accéder à DbContext.
Quelle est la bonne façon de trier cette liste afin qu'elle retourne toujours triée correctement à partir de mon référentiel?
Dernières j'ai essayé:
public async Task<Parent> GetParent(int id)
{
var loadedInMemory = context.Parents
.Include(p => p.Children)
.SingleOrDefaultAsync(p => p.Id == id);
var result = loadedInMemory.Result.Children.OrderBy(c => c.Sequence);
// When I order within the Task<Parent>, result becomes IOrderedEnumerable
// and I can't return it.
return await result;
}
Le résultat que vous essayez de renvoyer est la liste ordonnée des enfants. Ce n'est pas ce que tu veux. Au lieu de cela, triez les enfants puis renvoyez le parent:
public async Task<Parent> GetParent(int id)
{
var parent = context.Parents
.Include(p => p.Children)
.SingleOrDefaultAsync(p => p.Id == id);
parent.Result.Children = parent.Result.Children.OrderBy(c => c.Sequence).ToList();
return await parent;
}