• Domingo 22 de Diciembre de 2024, 18:49

Autor Tema:  Busqueda en Lista  (Leído 1934 veces)

princ_jan

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Busqueda en Lista
« en: Lunes 25 de Agosto de 2008, 02:27 »
0
Hola, Alguien me podría dar una mano en lo sig.
como se utiliza el método findIndex
lista.FindIndex(Predicate<string>match)

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Busqueda en Lista
« Respuesta #1 en: Lunes 25 de Agosto de 2008, 03:44 »
0
Cita de: "princ_jan"
Hola, Alguien me podría dar una mano en lo sig.
como se utiliza el método findIndex
lista.FindIndex(Predicate<string>match)
Acá está explicado y hay ejemplos
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

princ_jan

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Busqueda en Lista
« Respuesta #2 en: Martes 26 de Agosto de 2008, 04:01 »
0
el código del ejemplo es el sig.
Código: Text
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public class Example
  5. {
  6.     public static void Main()
  7.     {
  8.         List<string> dinosaurs = new List<string>();
  9.  
  10.         dinosaurs.Add("Compsognathus");
  11.         dinosaurs.Add("Amargasaurus");
  12.         dinosaurs.Add("Oviraptor");
  13.         dinosaurs.Add("Velociraptor");
  14.         dinosaurs.Add("Deinonychus");
  15.         dinosaurs.Add("Dilophosaurus");
  16.         dinosaurs.Add("Gallimimus");
  17.         dinosaurs.Add("Triceratops");
  18.  
  19.         Console.WriteLine();
  20.         foreach (string dinosaur in dinosaurs)
  21.         {
  22.             Console.WriteLine(dinosaur);
  23.         }
  24.  
  25.         Console.WriteLine("nFindIndex(EndsWithSaurus): {0}",
  26.             dinosaurs.FindIndex(EndsWithSaurus));
  27.  
  28.         Console.WriteLine("nFindIndex(2, EndsWithSaurus): {0}",
  29.             dinosaurs.FindIndex(2, EndsWithSaurus));
  30.  
  31.         Console.WriteLine("nFindIndex(2, 3, EndsWithSaurus): {0}",
  32.             dinosaurs.FindIndex(2, 3, EndsWithSaurus));
  33.         Console.ReadLine();
  34.     }
  35.  
  36.     // Search predicate returns true if a string ends in "saurus".
  37.     private static bool EndsWithSaurus(String s)
  38.     {
  39.         if ((s.Length > 5) &&
  40.             (s.Substring(s.Length - 6).ToLower() == "saurus"))
  41.         {
  42.             return true;
  43.         }
  44.         else
  45.         {
  46.             return false;
  47.         }
  48.     }
  49. }
  50.  
  51. /* This code example produces the following output:
  52.  
  53. Compsognathus
  54. Amargasaurus
  55. Oviraptor
  56. Velociraptor
  57. Deinonychus
  58. Dilophosaurus
  59. Gallimimus
  60. Triceratops
  61.  
  62. FindIndex(EndsWithSaurus): 1
  63.  
  64. FindIndex(2, EndsWithSaurus): 5
  65.  
  66. FindIndex(2, 3, EndsWithSaurus): -1
  67.  */
  68.  

pero no entiendo bien como funciona el findindex, la verdad es que recien comienzo con esto y necesito un pequeño empujón con eso

princ_jan

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Busqueda en Lista
« Respuesta #3 en: Jueves 28 de Agosto de 2008, 18:38 »
0
alguien me puede explicar sobre los parametros del findindex????

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Busqueda en Lista
« Respuesta #4 en: Jueves 28 de Agosto de 2008, 20:10 »
0
Es sencillo, el parametro predicate es una funcion que TU defines y en la que debes devolver true cuando se cumple la condicion que quieras, y false si no se cumple. Entonces el metodo FindIndex te devuelve el indice de la lista que cumple con esa condicion.

En el ejemplo que te dio mollense y que publicas, FindIndex utiliza una funcion que definiste, en esta caso llamada EndsWithSaurus, que devuelve true si la cadena que insertaste termina con "saurus" y false si no termina con "saurus".

Entonces la primera corrida te regresa como indice 1, porque de acuerdo al ejemplo, es la segunda cadena de la lista (Amargasaurus) la que termina con "saurus", y los indices comienzan con cero, entonces el primer elemento tiene indice 0, el segundo indice 1 y asi sucesivamente.

Si quieres cambiar la condicion, por ejemplo, que encuente el indice de la lista de todos los "pedros" tendrias que definir una funcion llamada BuscaPedro() que regrese true si encuentra a pedro en la cadena, y false si no encuentra a pedro en la cadena, y pasarsela como parametro a FindIndex.

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================