Ich habe nach einer Möglichkeit gesucht, jedes Element eines IEnumerable mithilfe einer Zuordnungsfunktion (auf Linq-kompatible Weise) in etwas anderes umzuwandeln, aber ich habe nichts gefunden.
Für ein (sehr einfaches) Beispiel sollte es in der Lage sein, so etwas zu tun
IEnumerable<int> integers = new List<int>() { 1, 2, 3, 4, 5 };
IEnumerable<string> strings = integers.Transform(i => i.ToString());
Aber ich habe nichts gefunden. Ich meine, es ist ziemlich einfach, eine Erweiterungsmethode zu schreiben, die dies erreicht (im Grunde ist es nur erforderlich, den Quell-Enumerator in eine neue Klasse zu packen und dann ein bisschen Boilerplate-Code zu schreiben, um die Aufrufe an ihn zu delegieren), aber ich hätte es erwartet Dies ist eine ziemlich elementare Operation, und das Schreiben selbst fühlt sich an, als würde man das Rad neu erfinden. Ich kann das Gefühl nicht loswerden, dass es eine eingebaute Methode gibt, die ich verwenden sollte, und ich war einfach zu blind, um sie zu sehen es.
Also ... gibt es etwas in Linq, das es mir ermöglicht, das zu tun, was ich oben beschrieben habe?
Antworten:
Sie können einfach die
Select()
Erweiterungsmethode verwenden:Oder in LINQ-Syntax:
quelle
Select()
erst ausgeführt wird, wenn sie aufgelistet ist. Das ist zwar keine gute Idee, aber es kann Situationen geben, in denen Sie möglicherweise etwas hinzufügen müssen, umToList()
die Auswertung der gesamten Liste zu erzwingen.Sie suchen nach
Select
dem, mit dem Sie die Eingabesequenz transformieren \ projizieren können:quelle