Heim > Backend-Entwicklung > C++ > Welche Linq -Operationen bewahren die Reihenfolge der Elemente in einer Sequenz?

Welche Linq -Operationen bewahren die Reihenfolge der Elemente in einer Sequenz?

Susan Sarandon
Freigeben: 2025-01-25 20:53:10
Original
853 Leute haben es durchsucht

Which LINQ Operations Preserve the Order of Elements in a Sequence?

Elementreihenfolge in LINQ beibehalten

In der Programmierung ist die Verarbeitung geordneter Daten ein häufiges Szenario. Beim Bearbeiten von Arrays mithilfe von LINQ to Objects ist es wichtig zu verstehen, welche Vorgänge die Reihenfolge der Elemente beibehalten, um versehentliche Änderungen zu vermeiden.

Operationen, die für Ordnung sorgen

Die folgenden LINQ-Operationen behalten die ursprüngliche Reihenfolge der Array-Elemente bei:

  • AsEnumerable: Konvertiert ein IEnumerable in ein nicht generisches IEnumerable.
  • Umwandeln: Elemente in einen anderen Typ konvertieren, ohne die Reihenfolge zu ändern.
  • Concat: Kombiniert zwei oder mehr Sequenzen und behält dabei die Reihenfolge jeder Sequenz bei.
  • Auswählen: Projiziert jedes Element auf einen neuen Wert, behält aber die Reihenfolge bei.
  • ToArray: Materialisiert ein IEnumerable in einem Array und behält dabei die Reihenfolge bei.
  • ToList: Materialisiert ein IEnumerable in einer Liste und behält dabei die ursprüngliche Reihenfolge bei.

Einige Vorgänge, die für Ordnung sorgen

Einige LINQ-Operationen filtern oder fügen Elemente hinzu, ohne die verbleibenden Elemente neu anzuordnen:

  • Eindeutig: Doppelte Elemente entfernen (basierend auf dem Gleichheitskomparator). (siehe Beschreibung unten)
  • Außer: Gibt Elemente zurück, die in der angegebenen Sequenz nicht gefunden wurden, wobei die Reihenfolge der ursprünglichen Sequenz beibehalten wird.
  • Intersect: Gibt Elemente zurück, die in beiden Sequenzen gefunden wurden, wobei die Reihenfolge der ersten Sequenz erhalten bleibt.
  • OfType: Elemente eines bestimmten Typs filtern und dabei die Reihenfolge beibehalten.
  • Prepend (neu in .NET 4.7.1): Fügt ein Element am Anfang der Sequenz hinzu.
  • Überspringen: Überspringt die angegebene Anzahl von Elementen am Anfang der Sequenz und behält die Reihenfolge der verbleibenden Elemente bei.
  • SkipWhile: Elemente überspringen, bis das Prädikat falsch wird, wobei die Reihenfolge der verbleibenden Elemente beibehalten wird.
  • Take: Gibt die angegebene Anzahl von Elementen am Anfang der Sequenz zurück, wobei die Reihenfolge beibehalten wird.
  • TakeWhile: Gibt Elemente zurück, bis das Prädikat falsch wird, wobei die Reihenfolge erhalten bleibt.
  • Wo: Filtert Elemente basierend auf einem Prädikat und behält dabei die Reihenfolge der übereinstimmenden Elemente bei.
  • Zip (neu in .NET 4): Paart Elemente aus zwei Sequenzen und behält dabei die Reihenfolge jeder Sequenz bei.

Operationen, die die Ordnung zerstören

Die folgenden LINQ-Vorgänge behalten nicht die ursprüngliche Reihenfolge der Elemente bei:

  • ToDictionary: Konvertiert eine Sequenz in ein Wörterbuch. Wörterbücher behalten keine Reihenfolge bei.
  • ToLookup: Ähnlich wie bei ToDictionary bleibt die Reihenfolge nicht erhalten.

Definieren Sie die Reihenfolge der Vorgänge neu

Diese LINQ-Operationen ändern explizit die Reihenfolge der Ergebnisse:

  • OrderBy: Sortiert Elemente in aufsteigender Reihenfolge basierend auf der Tastenauswahl.
  • OrderByDescending: Sortiert Elemente in absteigender Reihenfolge basierend auf der Schlüsselauswahl.
  • Umkehren: Kehren Sie die Reihenfolge der Elemente um.
  • ThenBy: Wird in Verbindung mit OrderBy oder OrderByDescending verwendet, um nach dem zweiten Schlüssel zu sortieren.
  • ThenByDescending: Wird in Verbindung mit OrderBy oder OrderByDescending verwendet, um nach dem zweiten Schlüssel in absteigender Reihenfolge zu sortieren.

Besondere Umstände

  • GroupBy: Die Reihenfolge der gruppierten Objekte basiert auf der Reihenfolge des ersten Elements jeder Gruppe. Die Elemente innerhalb der Gruppe werden in der Reihenfolge zurückgegeben, in der sie in der Quellsequenz erscheinen.
  • GroupJoin: Behält die Reihenfolge der Elemente in der äußeren Sequenz und die Reihenfolge der übereinstimmenden Elemente in der inneren Sequenz für jedes äußere Element bei.
  • Join: Behält ähnlich wie GroupJoin die Reihenfolge der Elemente in der äußeren Sequenz bei und stimmt mit der inneren Sequenz überein.
  • SelectMany: Die Reihenfolge wird durch die Reihenfolge der Quellelemente und die von der Selektorfunktion zurückgegebene Reihenfolge bestimmt.
  • Union: Die Elemente aus beiden Sequenzen werden in ihrer ursprünglichen Reihenfolge ohne Duplizierung erzeugt.

Anleitung:

Basierend auf der Implementierung in .NET wurde Distinct in die Kategorie „Reihenfolge beibehalten“ verschoben, die die Reihenfolge der Elemente beibehält, solange kein benutzerdefinierter Gleichheitskomparator bereitgestellt wird.

Das obige ist der detaillierte Inhalt vonWelche Linq -Operationen bewahren die Reihenfolge der Elemente in einer Sequenz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage