List<T>.FindIndex List<T>.FindIndex List<T>.FindIndex List<T>.FindIndex Method

Definición

Busca un elemento que cumpla las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el objeto List<T> o en una parte del mismo.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. Este método devuelve -1 si no se encuentra un elemento que cumpla las condiciones.This method returns -1 if an item that matches the conditions is not found.

Sobrecargas

FindIndex(Predicate<T>) FindIndex(Predicate<T>) FindIndex(Predicate<T>) FindIndex(Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en toda la matriz List<T>.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>) FindIndex(Int32, Predicate<T>) FindIndex(Int32, Predicate<T>) FindIndex(Int32, Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz List<T> que va desde el índice especificado hasta el último elemento.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>) FindIndex(Int32, Int32, Predicate<T>) FindIndex(Int32, Int32, Predicate<T>) FindIndex(Int32, Int32, Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz List<T> que comienza en el índice especificado y contiene el número especificado de elementos.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>) FindIndex(Predicate<T>) FindIndex(Predicate<T>) FindIndex(Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en toda la matriz List<T>.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

Parámetros

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Delegado Predicate<T> que define las condiciones del elemento que se va a buscar.The Predicate<T> delegate that defines the conditions of the element to search for.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Excepciones

Ejemplos

En el ejemplo siguiente se Employee define una clase con dos Name campos Id, y.The following example defines an Employee class with two fields, Name and Id. También define una EmployeeSearch clase con un método único, StartsWith, que indica si el Employee.Name campo comienza con una subcadena especificada que se proporciona al constructor de EmployeeSearch clase.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. Anote la firma de este métodoNote the signature of this method

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

corresponde a la firma del delegado que se puede pasar al FindIndex método.corresponds to the signature of the delegate that can be passed to the FindIndex method. En el ejemplo se crea List<Employee> una instancia de Employee un objeto, se agregan varios objetos y, después FindIndex(Int32, Int32, Predicate<T>) , se llama al método dos veces para buscar en toda la colección, Employee la primera Name vez que se inicia el primer objeto cuyo campo comienza con "J" y la segunda vez para el primer Employee objeto cuyo Name campo comienza por "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

Comentarios

List<T> Se busca hacia delante, empezando por el primer elemento y finalizando en el último elemento.The List<T> is searched forward starting at the first element and ending at the last element.

Es un delegado de un método que devuelve true si el objeto que se pasa coincide con las condiciones definidas en el delegado. Predicate<T>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. Los elementos del actual List<T> se pasan individualmente Predicate<T> al delegado.The elements of the current List<T> are individually passed to the Predicate<T> delegate. El delegado tiene la firma:The delegate has the signature:

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

Este método realiza una búsqueda lineal; por lo tanto, este método es una operación O (n), donde Count n es.This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.

Consulte también:

FindIndex(Int32, Predicate<T>) FindIndex(Int32, Predicate<T>) FindIndex(Int32, Predicate<T>) FindIndex(Int32, Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz List<T> que va desde el índice especificado hasta el último elemento.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

Parámetros

startIndex
Int32 Int32 Int32 Int32

Índice inicial de base cero de la búsqueda.The zero-based starting index of the search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Delegado Predicate<T> que define las condiciones del elemento que se va a buscar.The Predicate<T> delegate that defines the conditions of the element to search for.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Excepciones

startIndex está fuera del intervalo de índices válidos para List<T>.startIndex is outside the range of valid indexes for the List<T>.

Ejemplos

En el ejemplo siguiente se Employee define una clase con dos Name campos Id, y.The following example defines an Employee class with two fields, Name and Id. También define una EmployeeSearch clase con un método único, StartsWith, que indica si el Employee.Name campo comienza con una subcadena especificada que se proporciona al constructor de EmployeeSearch clase.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. Anote la firma de este métodoNote the signature of this method

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

corresponde a la firma del delegado que se puede pasar al FindIndex método.corresponds to the signature of the delegate that can be passed to the FindIndex method. En el ejemplo se crea List<Employee> una instancia de Employee un objeto, se agregan varios objetos y, después FindIndex(Int32, Int32, Predicate<T>) , se llama al método dos veces para buscar en la colección a partir de su quinto miembro (es decir, el miembro en el índice 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 primera vez, Employee busca el primer objeto cuyo Name campo comienza por "J"; la segunda vez, busca el primer Employee objeto cuyo Name campo comienza por "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

Comentarios

Se busca hacia delante, empezando en startIndex y finalizando en el último elemento. List<T>The List<T> is searched forward starting at startIndex and ending at the last element.

Es un delegado de un método que devuelve true si el objeto que se pasa coincide con las condiciones definidas en el delegado. Predicate<T>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. Los elementos del actual List<T> se pasan individualmente Predicate<T> al delegado.The elements of the current List<T> are individually passed to the Predicate<T> delegate. El delegado tiene la firma:The delegate has the signature:

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

Este método realiza una búsqueda lineal; por lo tanto, este método es una operación O (n), donde n es el número de startIndex elementos desde hasta el final List<T>de.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>.

Consulte también:

FindIndex(Int32, Int32, Predicate<T>) FindIndex(Int32, Int32, Predicate<T>) FindIndex(Int32, Int32, Predicate<T>) FindIndex(Int32, Int32, Predicate<T>)

Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve el índice de base cero de la primera aparición en el intervalo de elementos de la matriz List<T> que comienza en el índice especificado y contiene el número especificado de elementos.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

Parámetros

startIndex
Int32 Int32 Int32 Int32

Índice inicial de base cero de la búsqueda.The zero-based starting index of the search.

count
Int32 Int32 Int32 Int32

Número de elementos de la sección en la que se va a realizar la búsqueda.The number of elements in the section to search.

match
Predicate<T> Predicate<T> Predicate<T> Predicate<T>

Delegado Predicate<T> que define las condiciones del elemento que se va a buscar.The Predicate<T> delegate that defines the conditions of the element to search for.

Devoluciones

Índice de base cero de la primera aparición de un elemento que coincide con las condiciones definidas por match, si se encuentra; en caso contrario, -1.The zero-based index of the first occurrence of an element that matches the conditions defined by match, if found; otherwise, -1.

Excepciones

startIndex está fuera del intervalo de índices válidos para List<T>.startIndex is outside the range of valid indexes for the List<T>.

o bien-or- count es menor que 0.count is less than 0.

O bien-or- startIndex y count no especifican una sección válida en List<T>.startIndex and count do not specify a valid section in the List<T>.

Ejemplos

En el ejemplo siguiente se Employee define una clase con dos Name campos Id, y.The following example defines an Employee class with two fields, Name and Id. También define una EmployeeSearch clase con un método único, StartsWith, que indica si el Employee.Name campo comienza con una subcadena especificada que se proporciona al constructor de EmployeeSearch clase.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. Anote la firma de este métodoNote the signature of this method

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

corresponde a la firma del delegado que se puede pasar al FindIndex método.corresponds to the signature of the delegate that can be passed to the FindIndex method. En el ejemplo se crea List<Employee> una instancia de un objeto, Employee se le agrega un número de objetos y FindIndex(Int32, Int32, Predicate<T>) , a continuación, se llama al método dos veces para buscar en toda la colección (es Count decir, los miembros del índice 0 al índice-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 primera vez, Employee busca el primer objeto cuyo Name campo comienza por "J"; la segunda vez, busca el primer Employee objeto cuyo Name campo comienza por "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

Comentarios

startIndex startIndex count count Se busca hacia delante a partir de y termina en más menos 1, si es mayor que 0. List<T>The List<T> is searched forward starting at startIndex and ending at startIndex plus count minus 1, if count is greater than 0.

Es un delegado de un método que devuelve true si el objeto que se pasa coincide con las condiciones definidas en el delegado. Predicate<T>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. Los elementos del actual List<T> se pasan individualmente Predicate<T> al delegado.The elements of the current List<T> are individually passed to the Predicate<T> delegate. El delegado tiene la firma:The delegate has the signature:

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

Este método realiza una búsqueda lineal; por lo tanto, este método es una operación O (n), donde count n es.This method performs a linear search; therefore, this method is an O(n) operation, where n is count.

Consulte también:

Se aplica a