none
Filtros dinamicos con where, se puede? RRS feed

  • Pregunta

  • Hola queria consultar si puedo despues de hacer una consulta del tipo: 

    var consulta= (from nc in context.NoConformidades

                            from usuario in context.Usuarios

                            from area in context.Areas

                            from tnc in context.tipoNoConformidad

                            from seguimiento in context.Seguimientos

                            from estado in context.Estados

                            where ((nc.idUsuario == usuario.idUsuario) && (nc.idAreaDetecta == area.idArea) && (nc.idTipoNC == tnc.idTNC) && (nc.idSeguimiento == seguimiento.idSeguimiento) && (nc.idEstado == estado.idEstado))

                                select new 

                            {

                                nc.idNC,

                                nc.fechaRegistro,

                                nc.idUsuario,

                                usuario.Nombre,

                                nc.idAreaDetecta,

                                area.nombreArea,

                                nc.Descripcion,

                                nc.idTipoNC,

                                tnc.nombreTNC,

                                nc.idEstado,

                                estado.nombreEstado,

                                nc.idSeguimiento,

                                seguimiento.nombreSeguimiento,

                            });

     

    puedo aplicar un filtro del estilo:

     

     

    consulta = consulta.Where(x => x.idUsuario.Equals(

                            (from usuarios in context.Usuarios

                             select usuarios.idUsuario))); 

     

    actualmente me tira error, ya que tengo filtros dinamicos para usuario, area q detecta, etc, y lo haria con un if ya que en la tabla donde hago la consulta tengo el id y no el nombre que es lo que muestro en el gridview y aplicando el where, gracias! :)

    viernes, 17 de diciembre de 2010 19:39

Todas las respuestas

  • hola

    has intentado usar un join ?

    Sintaxis LINQ: Join

    Join Operator

    de esta forma relacionas las dos listas en tu caso consulta y usuarios

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 17 de diciembre de 2010 20:02
  • Si publica el error habriamos interpretado un poco mejor.

    AdventureWorksModel.AdventureWorksEntities db = new AdventureWorksModel.AdventureWorksEntities();
    
        var pp = db.Contacts.Select(ff => ff.ContactID); // Suponiendo que este es tu primer query
        var dd = db.Contacts.Select(aa => aa.LastName); // Suponiendo que este es tu segundo query
    
        foreach (var item in dd)
        {
          foreach (var item2 in pp)
          {
            // procesar el filtro
          }
        }

    Complementando un poco lo que dice Leandro

    La implementacion de join te reduce considerablemente el codigo, y el uso de EDM muchisimo mas


    Domingo Republica Dominicana
    viernes, 17 de diciembre de 2010 21:04