none
Consulta lista de datos dynamic. RRS feed

  • Pregunta

  • seria posible hacer un metodo generico que me permita filtral los datos de acuerdo a la columna que le pase por parametro. estoy intentando hacer esto:

    public static List<dynamic> Getlista(List<dynamic> lista, string campoFiltro, string campoValor)
            {
                var sql = lista.Where(s => s.Property<string>(campoFiltro) == campoValor);
                return sql.ToList<dynamic>();
            }

    esa consulta que estoy haciendo me dice que la lista que estoy pasando no contiene una definicion para Property.

    por ejemplo le puedo pasar una lista con los datos de una Persona y que campoFiltro=Nombre y campoValor seria lo que escriba en un TextBox.

    espero que comprendan mi pregunta.

    gracias de antemano. 

    domingo, 28 de octubre de 2012 16:42

Todas las respuestas

  • pero proque en lugar de usar dynamic no usas Generic

    este junto al uso de Expression<> seria lo ideal para lo que planteas

    LINQ, Lambda, and Generics: ReturnAll and Filter

    las expresiones de fltro puedes armarla por fuera antes de invocar al metodo

    public static List<T> Getlista<T>(List<T> lista, ...

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 29 de octubre de 2012 4:24
  • hola leandro gracias por responder. te voy a plantear el contesto de lo que deseo hacer.

    quiero hacer un formulario de busqueda que sea general. por ejemplo si deseo buscar un producto para ser modificado le paso la lista de producto, la columna que deseo hacer el filtro.

    en el formulario de busqueda tengo un TextBox que es donde se escribira el nombre de lo que el usuario desea busca.

    para modificar un cliente quiero hacer el mismo proceso. no se si me explico bien.

    si tienes un ejemplo de como puedo hacer eso con generic te lo agradeceria no tengo experienca trabajando con generic.

    por sierto estoy utilizando entity framework para obtener la lista de datos que deseo filtral.

    lunes, 29 de octubre de 2012 13:35