Bei der Verwendung von LINQ zum Erstellen von Abfragen stehen Entwickler häufig vor der Wahl von und
als Problem des Zieltyps. Um diese Wahl zu klären, lassen Sie uns ihre Verhaltens- und Leistungsunterschiede untersuchen.
IEnumerable
funktional vs. ähnlich List
Es stellt ein abstraktes Konzept dar und beschreibt, wie Daten iterieren können. Es gibt keine bestimmte Datenspeicherung oder -zugriffsmethode. Andererseits ist die spezifische Implementierung von , die Daten in einem Array der festen Größe speichert. Bei Verwendung von kann der Compiler flexibler verzögert und optimiert werden.
Beispiel: Linq Query und IEnumeration IEnumerable
List
Betrachten Sie die folgende Linq -Abfrage: IEnumerable
IEnumerable
operativen Symbolen zur Rückgabe abfragen. In haben interne Mitglieder wie "intern" und "extern" interne Mitglieder, um Anfragen und Bewertung zu verwalten.
verzögerte Bewertung im Vergleich zu eifriger Bewertung
<code class="language-csharp">IEnumerable<animal> sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct();</code>
-Objekt zu erzeugen. Distinct()
IEnumerable<animal>
Wann verwendet IEnumeration IEnumerable
Wenn die folgenden Situationen auftreten, ist mehr:
Sie beabsichtigen, mehrere LINQ -Ausdrücke zu stapeln, um eine verzögerte Bewertung und Optimierung zu ermöglichen. IEnumerable
ToList()
Sie möchten eine unnötige Verarbeitung vermeiden, indem Sie nur Daten zurückgeben, die nur tatsächliche Anforderungen benötigt. List
Wann verwendet die Liste
Wenn die folgenden Situationen auftreten, ist günstiger: IEnumerable
In Bezug auf die Leistung kann
, wenn die Abfrage mehrere oder für die Ausführung von Remotedatenquellen ausgeführt wird, effizienter als. Wenn Sie jedoch wiederholt auf die Abfrageergebnisse zugreifen müssen, kann List
durch Vermeiden mehrerer Bewertungen eine bessere Leistung liefern.
Das obige ist der detaillierte Inhalt vonIenumerable vs. List in Linq: Wann sollten Sie jeweils verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!