List FindLastIndex() Method in C# | Set -1 - GeeksforGeeks

25 Jan, 2019
This method is used to search for an element which matches the conditions defined by a specified predicate and returns the zero-based index of the last occurrence within the List<T> or a portion of it. There are 3 methods in the overload list of this method:
FindLastIndex(Predicate<T>) Method
FindLastIndex(Int32, Predicate<T>) Method
FindLastIndex(Int32, Int32, Predicate<T>) Method
Here, we will discuss only the first method i.e. FindLastIndex(Predicate<T>)
List<T>.FindLastIndex(Predicate<T>) Method searches for an element that matches the conditions defined by the specified predicate and returns the zero-based index of the last occurrence within the entire List<T>.
Syntax:
public int FindLastIndex (Predicate <T> match);
Here, the match is the Predicate <T> delegate that defines the conditions of the element to search for.
Return Value: If the element is found then it returns the zero-based index of type int or Int32 of the last element that matches a specified condition by the parameter “match”. And if not found then it returns “-1”.
Exception: This method will throw ArgumentNullException if the match is null.
Example 1: In this example, creating a List named “PC” that contains some element. Our task is to find an element named “Computer” and prints its index.
// C# Program to illustrate the // FindLastIndex(Predicate<T>)// Methodusing System;using System.Collections.Generic;  class GFG {      // Main Method    public static void Main()    {          // List creation        // List name is "PC"        List<string> PC = new List<string>();          // elements in the List        PC.Add("mouse");        PC.Add("keyboard");        PC.Add("laptop");        PC.Add("Computer");          // using the method        int indx = PC.FindLastIndex(predi);          Console.WriteLine(indx);    }      // Conditional method    private static bool predi(string g)    {          if (g == "Computer") {            return true;        }        else {            return false;        }    }}
3

Example 2: This example is the extended form of the previous example. In this example, we use an XML file and search an item and prints the index of that item. If the item is not found then prints “-1” and if found then prints the index. The item is\ “GeeksForGeeks”.
// C# Program to illustrate the // FindLastIndex(Predicate<T>)// Methodusing System;using System.Collections.Generic;using System.Linq;  class GFG {      // here List<T> contains the    // object "gfg" using    // data from a sample XML file    // "geeks" is the List name    private static List<gfg> geeks = new List<gfg>();      // Main Method    public static void Main()    {          // if the item is found         // then it prints the index        // if not found prints "-1"        int x = geeks.FindLastIndex(FindGFG);        Console.WriteLine(x);     }      // conditional method    private static bool FindGFG(gfg g)    {          if (g.G == "GeeksForGeeks")        {            return true;        }        else {            return false;        }    }}  public class gfg {      public string G    {        get;        set;    }}
-1

Note:
The List<T> is searched backward starting at the last element and ending at the first element.
The Predicate<T> is a delegate to a method that returns true if the object passed to it matches the conditions defined in the delegate. The elements of the current List<T> are individually passed to the Predicate<T> delegate.
This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.
Reference:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.findlastindex?view=netframework-4.7.2#System_Collections_Generic_List_1_FindLastIndex_System_Predicate__0__
CSharp-Generic-List
CSharp-Generic-Namespace
CSharp-method
Picked
Technical Scripter 2018
C#
Technical Scripter
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Difference between Ref and Out keywords in C#
C# | Delegates
Top 50 C# Interview Questions & Answers
C# | Constructors
Introduction to .NET Framework
Extension Method in C#
C# | Class and Object
C# | Abstract Classes
Common Language Runtime (CLR) in C#
C# | Encapsulation