In meiner .NET Core / EF Core-Anwendung habe ich ein Modell mit einer verschachtelten Liste untergeordneter Objekte. Beim Abrufen einer Instanz muss die verschachtelte Liste nach einer der Eigenschaften des Kindes sortiert werden. Ich verstehe aus ähnlichen Fragen und berichtete Probleme in EF Core, dass ich die verschachtelte Liste beim Abrufen der Instanz nicht bestellen kann. Jetzt versuche ich es zu sortieren, sobald es in den Speicher geladen wurde. aber hier bin ich auch nicht erfolgreich.
Ich verwende ein Repository-Muster, um auf DbContext zuzugreifen.
Wie ordne ich diese Liste so, dass sie immer korrekt aus meinem Repository sortiert zurückgegeben wird?
Zuletzt habe ich versucht:
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;
}
Das Ergebnis, das Sie zurückgeben möchten, ist die geordnete Liste der Kinder. Das willst du nicht. Sortieren Sie stattdessen die untergeordneten Elemente und geben Sie dann das übergeordnete Element zurück:
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;
}