Append() and Prepend()
Append() adds a value to the end of the sequence. Prepend() adds a value to the beginning of the sequence. This is usefull if you are not using .NET Core or .NET Framework 4.7.
Source
public static class Enumerable {
/// <summary>
/// Appends a value to the end of the sequence.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source">A sequence of values.</param>
/// <param name="element">The value to append to source.</param>
/// <returns>A new sequence that ends with element.</returns>
public static IEnumerable<T> Append<T>(this IEnumerable<T> source, T element) {
foreach (var item in source) {
yield return item;
}
yield return element;
}
/// <summary>
/// Adds a value to the beginning of the sequence.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source">A sequence of values.</param>
/// <param name="element">The value to prepend to source.</param>
/// <returns>A new sequence that begins with element</returns>
public static IEnumerable<T> Prepend<T>(this IEnumerable<T> source, T element) {
yield return element;
foreach (var item in source) {
yield return item;
}
}
}
Example
var numbers = new int[] { 1, 2, 3, 4 };
var qry = numbers.Append(5).Append(6).Prepend(0);
foreach (var item in qry) {
Console.WriteLine(item);
}
// Outputs: 0, 1, 2, 3, 4, 5, 6