Ich habe eine Frage dazu, wie die Garbage Collection in einer Linq-Abfrage behandelt werden könnte. Angenommen, ich habe eine Liste von Anfragen zu verarbeiten. Jede Anfrage erzeugt einen sehr großen Datensatz, aber dann wird ein Filter angewendet, um nur kritische Daten von jeder angeforderten Last zu behalten.
//Input data
List<request> requests;
IEnumerable<filteredData> results = requests.Select(request => Process(request)).Select(data => Filter(data));
Ich weiß also, dass die Abfrage für jedes Datenelement aufgeschoben wird, bis jedes gefilterte Datenelement angefordert wird, also ist das gut. Aber bleibt dieser mittlere speicherintensive Teil bestehen, bis die Aufzählung abgeschlossen ist?
Was ich hoffe, passiert ist, dass jedes Datenelement Garbage Collect werden kann, sobald es die gefilterte Stufe passiert, so dass sichergestellt wird, dass ich genug Speicher, um die gesamte Liste zu verarbeiten haben. Ist dies der Fall, oder hält die mittlere enumerable alles um, bis die gesamte Abfrage endet? Wenn ja, gibt es eine Linq-Möglichkeit, damit umzugehen?
Hinweis: Die Funktion Process() generiert die speicherintensiven Daten... das ist es, worüber ich mir Sorgen mache