Another gem I found on StackOverflow today (I’ve been spending a lot of time there these last couple of days..), this time in the form of a question on how to append or prepend a single value to an IEnumerable<T>.
Greg provided an elegant solution to this particular problem, and here’s his answer:
public static IEnumerable<T> Append<T>(this IEnumerable<T> source, T item) { foreach (T i in source) yield return i; yield return item; } public static IEnumerable<T> Prepend<T>(this IEnumerable<T> source, T item) { yield return item; foreach (T i in source) yield return i; }
Which you can use like this:
var all = GetHeaders().Append(GetData());
As others have stated, what’s so nice about this solution is that it does not mutate the original collection, instead it generates a new IEnumerbale<T>.