Sortieren einer Liste basierend auf IDs aus einer anderen Liste mit LINQ
In der Softwareentwicklung ist es oft notwendig, mit mehreren Listen zu arbeiten, die über IDs verfügen entsprechende Elemente. In diesem Fall verfügt der Benutzer über zwei Listen: eine mit einer Reihe von Bezeichnern (docIds) und eine andere mit entsprechenden T-Elementen (docs). Die Herausforderung besteht darin, die Dokumentenliste in derselben Reihenfolge wie die Dokumentenliste zu sortieren und dabei den ursprünglichen Typ der Dokumentenliste (Liste
Um dies mit LINQ (Language Integrated Query) zu erreichen, man kann die OrderBy-Erweiterungsmethode verwenden. Diese Methode verwendet einen Lambda-Ausdruck, der angibt, wie die Elemente in der Sammlung geordnet werden sollen. In diesem speziellen Fall muss der Lambda-Ausdruck auf die Id-Eigenschaft jedes Elements in der Dokumentliste zugreifen, um es mit dem entsprechenden Bezeichner in der Dokument-ID-Liste zu vergleichen.
Der folgende LINQ-Ausdruck führt diese Aufgabe aus:
docs = docs.OrderBy(d => docIds.IndexOf(d.Id)).ToList();
Dieser Ausdruck durchläuft die Dokumentenliste. Für jedes Element ruft er die IndexOf-Methode in der docIds-Liste auf, um die Position des Elements zu bestimmen entsprechende Kennung. Das Ergebnis ist eine geordnete Aufzählung, die dann der Dokumentenliste zugewiesen wird. Mithilfe der ToList-Methode wird die geordnete Aufzählung zurück in eine Liste
Zusammenfassend bietet dieser LINQ-Ausdruck eine einfache und effiziente Möglichkeit, eine Liste von Elementen basierend auf Bezeichnern aus einer anderen Liste neu anzuordnen. Dies ermöglicht die Beibehaltung sowohl der Reihenfolge als auch des Typs der ursprünglichen Liste.
Das obige ist der detaillierte Inhalt vonWie kann ich mit LINQ eine Liste basierend auf der Reihenfolge der IDs in einer anderen Liste sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!