List<T>.FindIndex Méthode

Définition

Recherches un élément qui correspond aux conditions définies par un prédicat spécifié et retourne l'index de base zéro de la première occurrence dans le List<T> ou une partie.Searches for an element that matches the conditions defined by a specified predicate, and returns the zero-based index of the first occurrence within the List<T> or a portion of it. Cette méthode retourne -1 si un élément correspondant aux conditions est introuvable.This method returns -1 if an item that matches the conditions is not found.

Surcharges

FindIndex(Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans le List<T>entier.Searches 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>.

FindIndex(Int32, Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans la plage d'éléments de List<T> qui s'étend de l'index spécifié au dernier élément.Searches for an element that 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<T> that extends from the specified index to the last element.

FindIndex(Int32, Int32, Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans la plage d'éléments de List<T> qui commence à l'index spécifié et contient le nombre d'éléments spécifié.Searches for an element that 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<T> that starts at the specified index and contains the specified number of elements.

FindIndex(Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans le List<T>entier.Searches 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>.

public:
 int FindIndex(Predicate<T> ^ match);
public int FindIndex (Predicate<T> match);
member this.FindIndex : Predicate<'T> -> int
Public Function FindIndex (match As Predicate(Of T)) As Integer

Paramètres

match
Predicate<T>

Délégué Predicate<T> qui définit les conditions de l'élément à rechercher.The Predicate<T> delegate that defines the conditions of the element to search for.

Retours

Index de base zéro de la première occurrence d’un élément qui répond aux conditions définies par match, si cette occurrence est trouvée ; sinon, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Exceptions

match a la valeur null.match is null.

Exemples

L’exemple suivant définit une classe Employee avec deux champs, Name et Id.The following example defines an Employee class with two fields, Name and Id. Il définit également une classe EmployeeSearch avec une méthode unique, StartsWith, qui indique si le champ Employee.Name commence par une sous-chaîne spécifiée qui est fournie au constructeur de classe EmployeeSearch.It also defines an EmployeeSearch class with a single method, StartsWith, that indicates whether the Employee.Name field starts with a specified substring that is supplied to the EmployeeSearch class constructor. Notez la signature de cette méthodeNote the signature of this method

public bool StartsWith(Employee e)  
Public Function StartsWith(e As Employee) As Boolean  

correspond à la signature du délégué qui peut être passé à la méthode FindIndex.corresponds to the signature of the delegate that can be passed to the FindIndex method. L’exemple instancie un objet List<Employee>, y ajoute un certain nombre d’objets Employee, puis appelle deux fois la méthode FindIndex(Int32, Int32, Predicate<T>) pour effectuer une recherche dans l’ensemble de la collection, la première fois pour le premier objet Employee dont le champ Name commence par « J », et la deuxième fois pour le premier objet Employee dont le champ Name commence par « Ju ».The example instantiates a List<Employee> object, adds a number of Employee objects to it, and then calls the FindIndex(Int32, Int32, Predicate<T>) method twice to search the entire collection, the first time for the first Employee object whose Name field begins with "J", and the second time for the first Employee object whose Name field begins with "Ju".

using System;
using System.Collections.Generic;

public class Employee : IComparable
{
   public String Name { get; set; }
   public int Id { get; set; }

   public int CompareTo(Object o )
   {
      Employee e = o as Employee;
      if (e == null)
         throw new ArgumentException("o is not an Employee object.");

      return Name.CompareTo(e.Name);
   }
}

public class EmployeeSearch
{
   String _s;

   public EmployeeSearch(String s)
   {
      _s = s;
   }

   public bool StartsWith(Employee e)
   {
      return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase);
   }
}

public class Example
{
   public static void Main()
   {
      var employees = new List<Employee>();
      employees.AddRange( new Employee[] { new Employee { Name = "Frank", Id = 2 },
                                           new Employee { Name = "Jill", Id = 3 },
                                           new Employee { Name = "Dave", Id = 5 },
                                           new Employee { Name = "Jack", Id = 8 },
                                           new Employee { Name = "Judith", Id = 12 },
                                           new Employee { Name = "Robert", Id = 14 },
                                           new Employee { Name = "Adam", Id = 1 } } );
      employees.Sort();

      var es = new EmployeeSearch("J");
      Console.WriteLine("'J' starts at index {0}",
                        employees.FindIndex(es.StartsWith));

      es = new EmployeeSearch("Ju");
      Console.WriteLine("'Ju' starts at index {0}",
                        employees.FindIndex(es.StartsWith));
   }
}
// The example displays the following output:
//       'J' starts at index 3
//       'Ju' starts at index 5
Imports System.Collections.Generic

Public Class Employee : Implements IComparable
   Public Property Name As String
   Public Property Id As Integer
   
   Public Function CompareTo(o As Object) As Integer _
         Implements IComparable.CompareTo
      Dim e As Employee = TryCast(o, Employee)
      If e Is Nothing Then
         Throw New ArgumentException("o is not an Employee object.")
      End If

      Return Name.CompareTo(e.Name)
   End Function
End Class

Public Class EmployeeSearch
   Dim _s As String
   
   Public Sub New(s As String)
      _s = s
   End Sub
   
   Public Function StartsWith(e As Employee) As Boolean
      Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
   End Function
End Class

Module Example
   Public Sub Main()
      Dim employees As New List(Of Employee)()
      employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
                            New Employee() With { .Name = "Jill", .Id = 3 },
                            New Employee() With { .Name = "Dave", .Id = 5 },
                            New Employee() With { .Name = "Jack", .Id = 8 },
                            New Employee() With { .Name = "Judith", .Id = 12 },
                            New Employee() With { .Name = "Robert", .Id = 14 },
                            New Employee() With { .Name = "Adam", .Id = 1 } } )
      employees.Sort()

      Dim es As New EmployeeSearch("J")
      Console.WriteLine("'J' starts at index {0}",
                        employees.FindIndex(AddressOf es.StartsWith))
      es = New EmployeeSearch("Ju")
      Console.WriteLine("'Ju' starts at index {0}",
                        employees.FindIndex(AddressOf es.StartsWith))
   End Sub
End Module
' The example displays the following output:
'       'J' starts at index 3
'       'Ju' starts at index 5

Remarques

Le List<T> effectue une recherche vers l’avant à partir du premier élément et se termine au dernier élément.The List<T> is searched forward starting at the first element and ending at the last element.

Le Predicate<T> est un délégué à une méthode qui retourne true si l’objet qui lui est passé correspond aux conditions définies dans le délégué.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. Les éléments de l' List<T> actuel sont passés individuellement au délégué Predicate<T>.The elements of the current List<T> are individually passed to the Predicate<T> delegate. Le délégué a la signature suivante :The delegate has the signature:

public bool methodName(T obj)  
Public Function methodName(obj As T) As Boolean  

Cette méthode effectue une recherche linéaire ; par conséquent, cette méthode est une opération O (n), où n est Count.This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.

Voir aussi

FindIndex(Int32, Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans la plage d'éléments de List<T> qui s'étend de l'index spécifié au dernier élément.Searches for an element that 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<T> that extends from the specified index to the last element.

public:
 int FindIndex(int startIndex, Predicate<T> ^ match);
public int FindIndex (int startIndex, Predicate<T> match);
member this.FindIndex : int * Predicate<'T> -> int
Public Function FindIndex (startIndex As Integer, match As Predicate(Of T)) As Integer

Paramètres

startIndex
Int32

Index de début de base zéro de la recherche.The zero-based starting index of the search.

match
Predicate<T>

Délégué Predicate<T> qui définit les conditions de l'élément à rechercher.The Predicate<T> delegate that defines the conditions of the element to search for.

Retours

Index de base zéro de la première occurrence d’un élément qui répond aux conditions définies par match, si cette occurrence est trouvée ; sinon, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Exceptions

match a la valeur null.match is null.

startIndex est en dehors de la plage d’index valides pour List<T>.startIndex is outside the range of valid indexes for the List<T>.

Exemples

L’exemple suivant définit une classe Employee avec deux champs, Name et Id.The following example defines an Employee class with two fields, Name and Id. Il définit également une classe EmployeeSearch avec une méthode unique, StartsWith, qui indique si le champ Employee.Name commence par une sous-chaîne spécifiée qui est fournie au constructeur de classe EmployeeSearch.It also defines an EmployeeSearch class with a single method, StartsWith, that indicates whether the Employee.Name field starts with a specified substring that is supplied to the EmployeeSearch class constructor. Notez la signature de cette méthodeNote the signature of this method

public bool StartsWith(Employee e)  
Public Function StartsWith(e As Employee) As Boolean  

correspond à la signature du délégué qui peut être passé à la méthode FindIndex.corresponds to the signature of the delegate that can be passed to the FindIndex method. L’exemple instancie un objet List<Employee>, y ajoute un certain nombre d’objets Employee, puis appelle à deux reprises la méthode FindIndex(Int32, Int32, Predicate<T>) pour effectuer une recherche dans la collection en commençant par son cinquième membre (c’est-à-dire, le membre à l’index 4).The example instantiates a List<Employee> object, adds a number of Employee objects to it, and then calls the FindIndex(Int32, Int32, Predicate<T>) method twice to search the collection starting with its fifth member (that is, the member at index 4). La première fois, elle recherche le premier objet Employee dont le champ Name commence par « J »; la deuxième fois, il recherche le premier objet Employee dont le champ Name commence par « Ju ».The first time, it searches for the first Employee object whose Name field begins with "J"; the second time, it searches for the first Employee object whose Name field begins with "Ju".

using System;
using System.Collections.Generic;

public class Employee : IComparable
{
   public String Name { get; set; }
   public int Id { get; set; }

   public int CompareTo(Object o )
   {
      Employee e = o as Employee;
      if (e == null)
         throw new ArgumentException("o is not an Employee object.");

      return Name.CompareTo(e.Name);
   }
}

public class EmployeeSearch
{
   String _s;

   public EmployeeSearch(String s)
   {
      _s = s;
   }

   public bool StartsWith(Employee e)
   {
      return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase);
   }
}

public class Example
{
   public static void Main()
   {
      var employees = new List<Employee>();
      employees.AddRange( new Employee[] { new Employee { Name = "Frank", Id = 2 },
                                           new Employee { Name = "Jill", Id = 3 },
                                           new Employee { Name = "Dave", Id = 5 },
                                           new Employee { Name = "Jack", Id = 8 },
                                           new Employee { Name = "Judith", Id = 12 },
                                           new Employee { Name = "Robert", Id = 14 },
                                           new Employee { Name = "Adam", Id = 1 } } );
      employees.Sort();

      var es = new EmployeeSearch("J");
      int index = employees.FindIndex(4, es.StartsWith);        
      Console.WriteLine("Starting index of'J': {0}",
                        index >= 0 ? index.ToString() : "Not found");

      es = new EmployeeSearch("Ju");
      index = employees.FindIndex(4, es.StartsWith);        
      Console.WriteLine("Starting index of 'Ju': {0}",
                        index >= 0 ? index.ToString() : "Not found");
   }
}
// The example displays the following output:
//       'J' starts at index 4
//       'Ju' starts at index 5
Imports System.Collections.Generic

Public Class Employee : Implements IComparable
   Public Property Name As String
   Public Property Id As Integer
   
   Public Function CompareTo(o As Object) As Integer _
         Implements IComparable.CompareTo
      Dim e As Employee = TryCast(o, Employee)
      If e Is Nothing Then
         Throw New ArgumentException("o is not an Employee object.")
      End If

      Return Name.CompareTo(e.Name)
   End Function
End Class

Public Class EmployeeSearch
   Dim _s As String
   
   Public Sub New(s As String)
      _s = s
   End Sub
   
   Public Function StartsWith(e As Employee) As Boolean
      Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
   End Function
End Class

Module Example
   Public Sub Main()
      Dim employees As New List(Of Employee)()
      employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
                            New Employee() With { .Name = "Jill", .Id = 3 },
                            New Employee() With { .Name = "Dave", .Id = 5 },
                            New Employee() With { .Name = "Jack", .Id = 8 },
                            New Employee() With { .Name = "Judith", .Id = 12 },
                            New Employee() With { .Name = "Robert", .Id = 14 },
                            New Employee() With { .Name = "Adam", .Id = 1 } } )
      employees.Sort()

      Dim es As New EmployeeSearch("J")
      Dim index As Integer = employees.FindIndex(4, AddressOf es.StartsWith)        
      Console.WriteLine("Starting index of'J': {0}",
                        If(index >= 0, index.ToString(), "Not found"))

      es = New EmployeeSearch("Ju")
      index = employees.FindIndex(4, AddressOf es.StartsWith) 
      Console.WriteLine("Starting index of'Ju': {0}",
                        If(index >= 0, index.ToString(), "Not found"))

   End Sub
End Module
' The example displays the following output:
'       'J' starts at index 4
'       'Ju' starts at index 5

Remarques

La recherche est effectuée vers List<T> l’avant à partir de startIndex et se termine au dernier élément.The List<T> is searched forward starting at startIndex and ending at the last element.

Le Predicate<T> est un délégué à une méthode qui retourne true si l’objet qui lui est passé correspond aux conditions définies dans le délégué.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. Les éléments de l' List<T> actuel sont passés individuellement au délégué Predicate<T>.The elements of the current List<T> are individually passed to the Predicate<T> delegate. Le délégué a la signature suivante :The delegate has the signature:

public bool methodName(T obj)  
Public Function methodName(obj As T) As Boolean  

Cette méthode effectue une recherche linéaire ; par conséquent, cette méthode est une opération O (n), où n est le nombre d’éléments de startIndex à la fin de l' List<T>.This method performs a linear search; therefore, this method is an O(n) operation, where n is the number of elements from startIndex to the end of the List<T>.

Voir aussi

FindIndex(Int32, Int32, Predicate<T>)

Recherche un élément qui correspond aux conditions définies par le prédicat spécifié et retourne l'index de base zéro de la première occurrence trouvée dans la plage d'éléments de List<T> qui commence à l'index spécifié et contient le nombre d'éléments spécifié.Searches for an element that 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<T> that starts at the specified index and contains the specified number of elements.

public:
 int FindIndex(int startIndex, int count, Predicate<T> ^ match);
public int FindIndex (int startIndex, int count, Predicate<T> match);
member this.FindIndex : int * int * Predicate<'T> -> int
Public Function FindIndex (startIndex As Integer, count As Integer, match As Predicate(Of T)) As Integer

Paramètres

startIndex
Int32

Index de début de base zéro de la recherche.The zero-based starting index of the search.

count
Int32

Nombre d'éléments contenus dans la section où la recherche doit être effectuée.The number of elements in the section to search.

match
Predicate<T>

Délégué Predicate<T> qui définit les conditions de l'élément à rechercher.The Predicate<T> delegate that defines the conditions of the element to search for.

Retours

Index de base zéro de la première occurrence d’un élément qui répond aux conditions définies par match, si cette occurrence est trouvée ; sinon, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Exceptions

match a la valeur null.match is null.

startIndex est en dehors de la plage d’index valides pour List<T>.startIndex is outside the range of valid indexes for the List<T>.

-ou--or- count est inférieur à 0.count is less than 0.

-ou--or- startIndex et count ne spécifient pas une section valide dans List<T>.startIndex and count do not specify a valid section in the List<T>.

Exemples

L’exemple suivant définit une classe Employee avec deux champs, Name et Id.The following example defines an Employee class with two fields, Name and Id. Il définit également une classe EmployeeSearch avec une méthode unique, StartsWith, qui indique si le champ Employee.Name commence par une sous-chaîne spécifiée qui est fournie au constructeur de classe EmployeeSearch.It also defines an EmployeeSearch class with a single method, StartsWith, that indicates whether the Employee.Name field starts with a specified substring that is supplied to the EmployeeSearch class constructor. Notez la signature de cette méthodeNote the signature of this method

public bool StartsWith(Employee e)  
Public Function StartsWith(e As Employee) As Boolean  

correspond à la signature du délégué qui peut être passé à la méthode FindIndex.corresponds to the signature of the delegate that can be passed to the FindIndex method. L’exemple instancie un objet List<Employee>, y ajoute un certain nombre d’objets Employee, puis appelle deux fois la méthode FindIndex(Int32, Int32, Predicate<T>) pour effectuer une recherche dans l’ensemble de la collection (autrement dit, les membres de l’index 0 à l’index Count-1).The example instantiates a List<Employee> object, adds a number of Employee objects to it, and then calls the FindIndex(Int32, Int32, Predicate<T>) method twice to search the entire collection (that is, the members from index 0 to index Count - 1). La première fois, elle recherche le premier objet Employee dont le champ Name commence par « J »; la deuxième fois, il recherche le premier objet Employee dont le champ Name commence par « Ju ».The first time, it searches for the first Employee object whose Name field begins with "J"; the second time, it searches for the first Employee object whose Name field begins with "Ju".

using System;
using System.Collections.Generic;

public class Employee : IComparable
{
   public String Name { get; set; }
   public int Id { get; set; }

   public int CompareTo(Object o )
   {
      Employee e = o as Employee;
      if (e == null)
         throw new ArgumentException("o is not an Employee object.");

      return Name.CompareTo(e.Name);
   }
}

public class EmployeeSearch
{
   String _s;

   public EmployeeSearch(String s)
   {
      _s = s;
   }

   public bool StartsWith(Employee e)
   {
      return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase);
   }
}

public class Example
{
   public static void Main()
   {
      var employees = new List<Employee>();
      employees.AddRange( new Employee[] { new Employee { Name = "Frank", Id = 2 },
                                           new Employee { Name = "Jill", Id = 3 },
                                           new Employee { Name = "Dave", Id = 5 },
                                           new Employee { Name = "Jack", Id = 8 },
                                           new Employee { Name = "Judith", Id = 12 },
                                           new Employee { Name = "Robert", Id = 14 },
                                           new Employee { Name = "Adam", Id = 1 } } );
      employees.Sort();

      var es = new EmployeeSearch("J");
      Console.WriteLine("'J' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1, es.StartsWith));

      es = new EmployeeSearch("Ju");
      Console.WriteLine("'Ju' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1,es.StartsWith));
   }
}
// The example displays the following output:
//       'J' starts at index 3
//       'Ju' starts at index 5
Imports System.Collections.Generic

Public Class Employee : Implements IComparable
   Public Property Name As String
   Public Property Id As Integer
   
   Public Function CompareTo(o As Object) As Integer _
         Implements IComparable.CompareTo
      Dim e As Employee = TryCast(o, Employee)
      If e Is Nothing Then
         Throw New ArgumentException("o is not an Employee object.")
      End If

      Return Name.CompareTo(e.Name)
   End Function
End Class

Public Class EmployeeSearch
   Dim _s As String
   
   Public Sub New(s As String)
      _s = s
   End Sub
   
   Public Function StartsWith(e As Employee) As Boolean
      Return e.Name.StartsWith(_s, StringComparison.InvariantCultureIgnoreCase)
   End Function
End Class

Module Example
   Public Sub Main()
      Dim employees As New List(Of Employee)()
      employees.AddRange( { New Employee() With { .Name = "Frank", .Id = 2 },
                            New Employee() With { .Name = "Jill", .Id = 3 },
                            New Employee() With { .Name = "Dave", .Id = 5 },
                            New Employee() With { .Name = "Jack", .Id = 8 },
                            New Employee() With { .Name = "Judith", .Id = 12 },
                            New Employee() With { .Name = "Robert", .Id = 14 },
                            New Employee() With { .Name = "Adam", .Id = 1 } } )
      employees.Sort()

      Dim es As New EmployeeSearch("J")
      Console.WriteLine("'J' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1,
                                            AddressOf es.StartsWith))
      es = New EmployeeSearch("Ju")
      Console.WriteLine("'Ju' starts at index {0}",
                        employees.FindIndex(0, employees.Count - 1,
                                            AddressOf es.StartsWith))
   End Sub
End Module
' The example displays the following output:
'       'J' starts at index 3
'       'Ju' starts at index 5

Remarques

La recherche est effectuée vers List<T> l’avant à partir de startIndex et se termine à startIndex plus count moins 1, si count est supérieur à 0.The List<T> is searched forward starting at startIndex and ending at startIndex plus count minus 1, if count is greater than 0.

Le Predicate<T> est un délégué à une méthode qui retourne true si l’objet qui lui est passé correspond aux conditions définies dans le délégué.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. Les éléments de l' List<T> actuel sont passés individuellement au délégué Predicate<T>.The elements of the current List<T> are individually passed to the Predicate<T> delegate. Le délégué a la signature suivante :The delegate has the signature:

public bool methodName(T obj)  
Public Function methodName(obj As T) As Boolean  

Cette méthode effectue une recherche linéaire ; par conséquent, cette méthode est une opération O (n), où n est count.This method performs a linear search; therefore, this method is an O(n) operation, where n is count.

Voir aussi

S’applique à