bearbeiten für Nicht-Liste Eingänge gerecht zu werden, jetzt Griffe IEnumerable<T>
und prüft wenn dies ein IList<T>
; wenn nicht, puffert es über ToList()
, was dazu beiträgt sicherzustellen, dass wir nur die Daten einmal lesen (anstatt .Count()
und .Skip()
, die die Daten mehrmals lesen können).
Da dies eine Liste ist, würde ich geneigt sein, eine Erweiterungsmethode zu schreiben, die auf den vollen dass verwendet:
public static IEnumerable<T> TakeLast<T>(
this IEnumerable<T> source, int count)
{
IList<T> list = (source as IList<T>) ?? source.ToList();
count = Math.Min(count, list.Count);
for (int i = list.Count - count; i < list.Count; i++)
{
yield return list[i];
}
}
Warum die 'Select (a => a)'? Es tut nichts ... – tzaman
das war mein "Dummy", um den letzten x records filter – Ivo