none
Búsqueda en un List genérico RRS feed

  • Pregunta

  • Saludos a todos.

    Tengo el siguiente problema:

    Por un lado tengo esta clase:

    	public class DataComboIdDesc
    	{
    		public int Id { get; set; }
    		public Object Descrip { get; set; }
    
    		public DataComboIdDesc(int intId, string strDescrip)
    		{
    			Id = intId;
    			Descrip = strDescrip;
    		}
    	}
    

    Por otro lado tengo el siguiente List:

    List<DataComboIdDesc> lstActividades = new List<LN.DataComboIdDesc>();
    Este list es rellenado desde una tabla con los campos Id, Descrip. 


    foreach (DataRow dr in dt.Rows)
    {
      lstActividades.Add(new DataComboIdDesc(Convert.ToInt32(dr[0]), dr[1].ToString()));
    }
    
    

    Quiero obtener un segundo List (lstFiltrado) con un filtro sobre el primero (lstActividades), utilizando el método FindAll, de todos los elementos cuya segunda columna contenga una palabra determinada. He visto algún ejemplo que utiliza la siguiente sintaxis:

    string strFiltro = "palabra"
    
    List<DataComboIdDesc> lstFiltrado = lstActividades.FindAll(x => x.Contains(strFiltro));

    Pero a mi no me aparece el método Contains, sólo Equals. Me imagino que esta sintáxis es cuando tienes una sola columna, pero yo tengo 2 y quiero filtrar por la segunda, que es la descripción.

    Gracias por la ayuda que me puedan brindar.


    martes, 17 de abril de 2018 12:47

Todas las respuestas

  • Por cierto, ¿por qué declaras Object Descrip si luego en el constructor siempre le asignas un string? ¿No sería mejor declararlo como string, y así puedes aplicarle el "Contains"?

    public String Descrip { get; set; }

    ... FindAll(x => x.Descrip.Contains(strFiltro));

    Fíjate que el Contains es un método de la clase string. Por eso el x.Contains(strFiltro) solo funciona con List<string>, y no funciona con List<tuClase>, a no ser que dentro de tuClase añadas un método que se llame Contains. No tiene nada que ver con el hecho de que "haya dos columnas" como mencionabas.

    martes, 17 de abril de 2018 13:51
  • Gracias.

    Lo de Object ha sido un lapsus de cansancio, ya que la clase la copie de otra que tengo para otro List y modifiqué sólo en el constructor.

    En efecto, es por eso que no funcionó.

    Gracias nuevamente.

    martes, 17 de abril de 2018 18:31