Full repo available at https://bitbucket.org/createdbyx/codefarts.utilities-extension-methods-only
/// <summary>
/// Crops an array to a specified length.
/// </summary>
/// <typeparam name="T">Specifies the generic type of the array.</typeparam>
/// <param name="array">The destination array.</param>
/// <param name="length">The length that the destination array will be set to.</param>
/// <returns>Returns the resized and updated destination array.</returns>
public static T[] Crop<T>(this T[] array, int length)
{
if (array == null)
{
return array;
}
Array.Resize(ref array, Math.Max(length, 0));
return array;
}
/// <summary>
/// Crops an array to a specified length.
/// </summary>
/// <typeparam name="T">Specifies the generic type of the array.</typeparam>
/// <param name="array">The destination array.</param>
/// <param name="index">The index in the destination array where cropping begins at.</param>
/// <param name="length">The length that the destination array will be set to.</param>
/// <returns>
/// Returns the resized and updated destination array.
/// </returns>
/// <exception cref="ArgumentOutOfRangeException">length;'length' argument must be greater then 0.</exception>
public static T[] Crop<T>(this T[] array, int index, int length)
{
if (array == null)
{
return array;
}
if (length <= 0)
{
throw new ArgumentOutOfRangeException("length", "'length' argument must be greater then 0.");
}
if (index < 0 || index > array.Length - 1)
{
return array;
}
length = Math.Min(length, array.Length - index);
if (index > 0)
{
Array.Copy(array, index, array, 0, length);
}
Array.Resize(ref array, length);
return array;
}