Wie konvertieren System.Linq -.Enumerable.WhereListIterator<int> List<int>?
In dem Beispiel weiter unten, wie kann ich leicht umwandeln eventScores
zu List<int>
so dass ich es verwenden kann als einen parameter für prettyPrint
?
Console.WriteLine("Example of LINQ's Where:");
List<int> scores = new List<int> { 1,2,3,4,5,6,7,8 };
var evenScores = scores.Where(i => i % 2 == 0);
Action<List<int>, string> prettyPrint = (list, title) =>
{
Console.WriteLine("*** {0} ***", title);
list.ForEach(i => Console.WriteLine(i));
};
scores.ForEach(i => Console.WriteLine(i));
prettyPrint(scores, "The Scores:");
foreach (int score in evenScores) { Console.WriteLine(score); }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie die Verwendung der ToList-extension:
Nicht funktioniert?
Durch die Art und Weise, warum tun Sie erklären prettyPrint mit dieser spezifischen Art für erzielt parameter und verwenden Sie diesen parameter nur als IEnumerable (ich nehme an, dies ist, wie Sie umgesetzt ForEach-Erweiterungsmethode)? Warum also nicht ändern prettyPrint Signatur und halten diese lazy ausgewertet? =)
Wie diese:
Update:
Oder Sie können vermeiden Sie die Verwendung-Liste.ForEach, wie dies (nicht berücksichtigt werden, die string-Verkettung Ineffizienz):
ForEach
ist eine eingebaute Methode auf derList<T>
Klasse. Sie würde haben schreiben Sie Ihre eigenen Erweiterungs-Methode zu verwendenForEach
mitIEnumerable<T>
.