List<T>.FindIndex Method is used to search for an element that matches the conditions defined by a specified predicate and returns the index of the first occurrence within the List<T>. If an item which matches the conditions is not found then this method will return -1. There are 3 methods in the overload list of this method as follows:
- FindIndex(Predicate<T>)Method
- FindIndex(Int32,Predicate<T>)Method
- FindIndex(Int32, Int32, Predicate<T>) Method
FindIndex(Predicate<T>) Method
This method is used to search for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire List<T>.
Syntax: public int FindIndex (Predicate<T> match); Parameter: match: It is the Predicate<T> delegate that defines the conditions of the element to search for.
Return Value: It returns the index of the first occurrence of an element that matches the conditions defined by match, if found. If not found it returns -1. Exception: This method will give ArgumentNullException if match is null. Example:
csharp
using System;
using System.Collections.Generic;
class GFG1 : IComparable {
public String gg
{
get ;
set ;
}
public int CompareTo(Object o)
{
GFG1 e = o as GFG1;
if (e == null )
throw new ArgumentException("Not valid object ");
return gg.CompareTo(e.gg);
}
}
class GFG2 {
String s;
public GFG2(String ss)
{
s = ss;
}
public bool StartsWith(GFG1 e)
{
return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
}
}
class GFG3 {
public static void Main()
{
var e = new List<GFG1>();
e.AddRange( new GFG1[] {
new GFG1{
gg = "c",
},
new GFG1{
gg = "c++",
},
new GFG1{
gg = "java",
},
new GFG1{
gg = "C#",
},
new GFG1{
gg = "Python",
},
new GFG1{
gg = "Perl",
},
});
e.Sort();
var es = new GFG2("C");
Console.WriteLine(" 'C' starts at index "
+ e.FindIndex(es.StartsWith));
es = new GFG2("P");
Console.WriteLine(" 'P' starts at index " +
e.FindIndex(es.StartsWith));
}
}
|
Output:
'C' starts at index 0
'P' starts at index 4
FindIndex(Int32, Predicate<T>) Method
This method searches for an element which matches the conditions defined by the specified predicate and returns the index of the first occurrence within the range of elements in the List which extends from the specified index to the last element.
Syntax: public int FindIndex (int startIndex, Predicate<T> match); Parameter: startIndex: It is the zero-based starting index of the search. match: It is the Predicate<T> delegate that defines the conditions of the element to search for.
Return Value: This method will return the index of the first occurrence of an element that matches the conditions defined by “match”, if found. If not found it returns -1. Exceptions:
- ArgumentNullException: If the match is null.
- ArgumentOutOfRangeException: If the startIndex is outside the range of valid indexes for the List<T>.
Example:
csharp
using System;
using System.Collections.Generic;
class GFG1 : IComparable {
public String gg
{
get ;
set ;
}
public int CompareTo(Object o)
{
GFG1 e = o as GFG1;
return gg.CompareTo(e.gg);
}
}
class GFG2 {
String s;
public GFG2(String ss)
{
s = ss;
}
public bool StartsWith(GFG1 e)
{
return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
}
}
class GFG3 {
public static void Main()
{
var e = new List<GFG1>();
e.AddRange( new GFG1[] {
new GFG1{
gg = "c",
},
new GFG1{
gg = "Python",
},
new GFG1{
gg = "Java",
},
new GFG1{
gg = "C#",
},
new GFG1{
gg = "Java",
},
new GFG1{
gg = "Perl",
},
});
e.Sort();
var es = new GFG2("C");
Console.WriteLine("Search for 'C' starts at index "
+ e.FindIndex(1, es.StartsWith));
es = new GFG2("J");
Console.WriteLine("Search for 'J' starts at index "
+ e.FindIndex(2, es.StartsWith));
}
}
|
Output:
Search for 'C' starts at index 1
Search for 'J' starts at index 2
FindIndex(Int32, Int32, Predicate<T>) Method
This method searches for an element which matches the conditions defined by the specified predicate and returns the zero-based index of the first occurrence within the range of elements in the List that starts at the specified index and contains the specified number of elements.
Syntax: public int FindIndex (int startIndex, int count, Predicate<T> match); Parameters: startIndex: It is the zero-based starting index of the search. count: It is the number of elements in the section to search. match: It is the Predicate<T> delegate that defines the conditions of the element to search for.
Return Value: This method will return the index of the first occurrence of an element that matches the conditions defined by “match”, if found. If not found it returns -1. Exceptions:
- ArgumentNullException: If the match is null.
- ArgumentOutOfRangeException: If the startIndex is outside the range of valid indexes for the List<T> or count is less than 0 or startIndex and count do not specify a valid section in the List<T>.
Example:
csharp
using System;
using System.Collections.Generic;
class GFG1 : IComparable {
public String gg
{
get ;
set ;
}
public int CompareTo(Object o)
{
GFG1 e = o as GFG1;
return gg.CompareTo(e.gg);
}
}
class GFG2 {
String s;
public GFG2(String ss)
{
s = ss;
}
public bool StartsWith(GFG1 e)
{
return e.gg.StartsWith(s, StringComparison.InvariantCultureIgnoreCase);
}
}
class GFG3 {
public static void Main()
{
var e = new List<GFG1>();
e.AddRange( new GFG1[] {
new GFG1{
gg = "c",
},
new GFG1{
gg = "Python",
},
new GFG1{
gg = "C++",
},
new GFG1{
gg = "Java",
},
new GFG1{
gg = "C#",
},
new GFG1{
gg = "Perl",
},
});
e.Sort();
var es = new GFG2("C");
Console.WriteLine("Search for 'C' starts at index "
+ e.FindIndex(0, 2, es.StartsWith));
es = new GFG2("J");
Console.WriteLine("Search for 'J' starts at index "
+ e.FindIndex(2, 4, es.StartsWith));
}
}
|
Output:
Search for 'C' starts at index 0
Search for 'J' starts at index 3
Reference:
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
23 Mar, 2022
Like Article
Save Article