Array - FindLastIndex

A T[] extension method that searches for the last index.

Try it

public static void Main()
{
    string[] dinosaurs = { "Compsognathus",
    "Amargasaurus",   "Oviraptor",      "Velociraptor",
    "Deinonychus",    "Dilophosaurus",  "Gallimimus",
    "Triceratops" };

    Console.WriteLine();
    foreach (string dinosaur in dinosaurs)
    {
        Console.WriteLine(dinosaur);
    }

    // C# Extension Method: Array - FindLastIndex
    Console.WriteLine("\nArray.FindIndex(dinosaurs, EndsWithSaurus): {0}", dinosaurs.FindLastIndex(EndsWithSaurus));
    Console.WriteLine("\nArray.FindIndex(dinosaurs, 2, EndsWithSaurus): {0}", dinosaurs.FindLastIndex(2, EndsWithSaurus));
    Console.WriteLine("\nArray.FindIndex(dinosaurs, 2, 3, EndsWithSaurus): {0}", dinosaurs.FindLastIndex(2, 3, EndsWithSaurus));
}

// Search predicate returns true if a string ends in "saurus".
private static bool EndsWithSaurus(String s)
{
    if ((s.Length > 5) &&
        (s.Substring(s.Length - 6).ToLower() == "saurus"))
    {
        return true;
    }
    else
    {
        return false;
    }
}

View Source
using System;

public static partial class Extensions
{
    /// <summary>
    ///     A T[] extension method that searches for the last index.
    /// </summary>
    /// <typeparam name="T">Generic type parameter.</typeparam>
    /// <param name="array">The array to act on.</param>
    /// <param name="match">Specifies the match.</param>
    /// <returns>The found index.</returns>
    public static Int32 FindLastIndex<T>(this T[] array, Predicate<T> match)
    {
        return Array.FindLastIndex(array, match);
    }

    /// <summary>
    ///     A T[] extension method that searches for the last index.
    /// </summary>
    /// <typeparam name="T">Generic type parameter.</typeparam>
    /// <param name="array">The array to act on.</param>
    /// <param name="startIndex">The start index.</param>
    /// <param name="match">Specifies the match.</param>
    /// <returns>The found index.</returns>
    public static Int32 FindLastIndex<T>(this T[] array, Int32 startIndex, Predicate<T> match)
    {
        return Array.FindLastIndex(array, startIndex, match);
    }

    /// <summary>
    ///     A T[] extension method that searches for the last index.
    /// </summary>
    /// <typeparam name="T">Generic type parameter.</typeparam>
    /// <param name="array">The array to act on.</param>
    /// <param name="startIndex">The start index.</param>
    /// <param name="count">Number of.</param>
    /// <param name="match">Specifies the match.</param>
    /// <returns>The found index.</returns>
    public static Int32 FindLastIndex<T>(this T[] array, Int32 startIndex, Int32 count, Predicate<T> match)
    {
        return Array.FindLastIndex(array, startIndex, count, match);
    }
}