Heim >Backend-Entwicklung >C++ >Ienumerable vs. List in Linq: Wann sollte ich jeweils verwenden?
listet in .NET,
und sind die beiden grundlegenden Datenstrukturen, die die Objektsequenz anzeigen. Beide können zusammen mit der Expressionsformel von LINQ (Sprachintegration) verwendet werden, um Datenkonvertierung und -aggregation durchzuführen, unterscheiden sich jedoch in Bezug auf Verhaltens- und Leistungsmerkmale. IEnumerable
List
entektionales Verhalten
ist eine Schnittstelle, die das Verhalten der iterativen Elementsequenz definiert. Es liefert die -Methode, die ein Objekt der -Schinschnittstelle zurückgibt. Wenn Sie die -Kollektion iterieren, durchquerten die Enumer ein Element gleichzeitig.
im Code des von Ihnen angegebenen Codes ist der Typ der IEnumerable
-Variablen GetEnumerator()
. Wenn Sie es debuggen und es überprüfen, werden Sie Mitglieder wie "Inner" und "Outer" bemerken. Diese Mitglieder sind Teil der internen Implementierung von LINQ und der zugrunde liegenden Abfragepipeline. IEnumerator
IEnumerable
"Innere" -Mitglieder enthalten normalerweise das Zwischenergebnis des LINQ -Ausdrucks vor der Anwendung weiterer Konvertierung oder Screenter. Es ist besonders nützlich für komplexe Debugging -Anfragen.
Leistungsvorkehrungen sel
IEnumerable<animal>
List<animal>
In Bezug auf die Leistung bietet normalerweise eine bessere Fähigkeit zur Flexibilität und Optimierung. Der LINQ -Ausdruck wird verzögert, was bedeutet, dass sie nur dann ausgeführt werden können, wenn Sie die Sequenz aufzählen. Dies ermöglicht dem Compiler und der Ausführung von Abfragenoptimierung und einer verzögerten Bewertung im Hintergrund.
Andererseits verwenden Sie die
-Methode, umin in die Abfrage umzuwandeln und alle Ergebnisse in den Speicher zu laden. Wenn Sie mehrmals auf Daten zugreifen müssen, ist dies möglicherweise effizienter, da doppelte Kosten beseitigt werden.
Im Allgemeinen wird empfohlen, zu verwenden, wenn Sie nur die Sequenz iterieren müssen und eine Verzögerungsbewertung verwenden möchten. Wenn Sie mehrmals auf die Daten zugreifen müssen oder diese in der statischen Datenstruktur speichern müssen, kann sie in IEnumerable
in die Leistung konvertiert werden.
spezifische Beispiele .ToList()
IEnumerable
List
Der von Ihnen bereitgestellte Code zeigt, wie Sie
können Sie IEnumerable
und List
verwenden, um sie zu überprüfen, ohne die gesamte Abfrage mehrmals auszuführen.
Wenn Sie jedoch die Leoparden und die Knödel um ein Vielfaches aufzählen müssen, wird er in eine Liste umgewandelt, um effizienter zu verwenden. Auf diese Weise wird jeder Satz von Datenbankabfragen nur einmal durchgeführt.
Das obige ist der detaillierte Inhalt vonIenumerable vs. List in Linq: Wann sollte ich jeweils verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!