none
saber si un elemento se encuentra dentro de una lista RRS feed

  • Pregunta

  • holaaa, tengo una lista y quiero saber si un elemento se encuentra dentro de esa lista. Hay algun metodo para hacerlo o tengo que recorrer la lista completa preguntando por el elemento???
    martes, 6 de diciembre de 2011 17:01

Todas las respuestas

  • Hola 

    Puedes hacer algo como esto:

        bool has = list.Any(x => x == valorBusqueda);

    Comenta si te ha servido

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Propuesto como respuesta eduard tomàsMVP viernes, 23 de diciembre de 2011 11:04
    martes, 6 de diciembre de 2011 17:25
  • Tal y como dice Antonio con el método Any te servirá para tipos simples(int, string,...) y también existen otros como Contains o Count para determinar la cantidad.

    Para objetos hay que tener en cuenta que aunque ambas instancias sean idénticas en valores, internamente se comparan referencias con lo que deberás igualar sus identificadores o valores únicos.


    Vota mi respuesta si te ha sido útil. Gracias.
    miércoles, 7 de diciembre de 2011 13:03
  • Esto es lo que buscas¿?

     

    var a = (from c in NOMBREDEMILISTA where c.Nombre = 'PARAMETROBUSQUEDA' select c).first();

    if(a != null)

    {}

     

    • Propuesto como respuesta ccmmasi jueves, 8 de marzo de 2012 21:50
    lunes, 19 de diciembre de 2011 19:27
  • @ccmmasi

    Eso que has puesto da excepción si el resultado de la consulta no tiene ningún elemento.

    Si quieres usar esta técnica se debe llamar a FirstOrDefault(), no a First().

    Aunque si lo único que quieres hacer es verificar si existe algún elemento (te da igual cual) que cumpla la condición es mejor usar Any() como ya han dicho antes. Siguiente tu código:

    bool existe = var a = (from c in NOMBREDEMILISTA where c.Nombre = 'PARAMETROBUSQUEDA' select c).Any();
    
    

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Propuesto como respuesta ccmmasi jueves, 8 de marzo de 2012 21:50
    viernes, 23 de diciembre de 2011 11:04
  • Hola, puedes utilizar predicados.

     private string Buscar()
            {
                List<string> a = new List<string> {"Buscado"};
     
                string encontrado = a.Find(A);
     
                return encontrado;
     
            }
     
            private bool A(string obj)
            {
                return obj == "Buscado"; //Elemento a buscar
            }

    Me avisas cualquier cosa.

    jueves, 29 de diciembre de 2011 19:42
  • Lo que buscaba realizar es algo muy parecido a la pregunta original, con la diferencia de que no estoy trabajando sobre un Listado de int o string, sino sobre un Listado de objetos (con varios atributos). Entonces estaba tratando de localizar un elemento del listado que un atributo en particular sea igual a cierto dato.

    Aún así la respuesta de Antonio Lobo me resolvió el problema (sin for o foreach o algo parecido).

    Pongo mi código. Espero sea de utilidad.

    List<XObjeto> listadoXObjeto = new List<XObjeto>();

    ...

    if (listadoXObjeto.Any(x =>x.atributoObjeto== xDatoBuscado) )
    {

          // Hace lo necesario

    }

    La única diferencia sería la parte de "x.atributoObjeto" en lugar de solamente "x".

    Muchas gracias Antonio.

    Saludos.

    viernes, 17 de agosto de 2012 20:57
  • Muchas gracias me sirvió a mi 
    martes, 29 de mayo de 2018 18:03