Eugenio: yo hago algo así que es re simple

 

var consulta = bd.GetTable<Entidad>().Select(c => c);

 

if (condición de bousqueda 1 != nula)

consulta = consulta.Where(c => condición);

 

if (condición de bousqueda 2 != nula)

consulta = consulta.Where(c => condición);

 

... etc

 

 

Ejemplo:

 

 

  public List<ConsultaResumenGuia> GuiasObtenerPorFlitro(

IEntidadContextoDeUsuario contextoDeUsuario, Paginado Pagina, FiltrosGuia 
filtroGuia, bool traerDetalleElementos)

        {

 

            List<ConsultaResumenGuia> retval = new List<ConsultaResumenGuia>();

            List<EntidadGuia> lista;

 

            List<EntidadExpedientePorFiscalizacion> datosFiscalizaciones = null;

 

            using (ContextoDeDatosDeDeposito bd = new ContextoDeDatosDeDeposito 
{ DeferredLoadingEnabled = false })

            {

                #region DataLoadOptions

 

                bd.LoadOptions = GenerarDataLoadOptionsParaGuias();

 

                #endregion

 

                var consulta = bd.GetTable<EntidadGuia>().Select(c => c);

 

                #region Filtro de Guias

 

                FiltrosGuia filtroG = filtroGuia;//.Value;

 

                #region Filtro Fechas

 

                if (filtroG.FechaDesde.HasValue)

                    filtroG.FechaDesde = new 
DateTime(filtroG.FechaDesde.Value.Year, filtroG.FechaDesde.Value.Month, 
filtroG.FechaDesde.Value.Day);

                if (filtroG.FechaHasta.HasValue)

                    filtroG.FechaHasta = new 
DateTime(filtroG.FechaHasta.Value.Year, filtroG.FechaHasta.Value.Month, 
filtroG.FechaHasta.Value.Day, 23, 59, 59);

 

                if (filtroG.FechaDesde.HasValue)

                    consulta = consulta.Where(c => c.Fecha >= 
filtroG.FechaDesde.Value);

 

                if (filtroG.FechaHasta.HasValue)

                    consulta = consulta.Where(c => c.Fecha <= 
filtroG.FechaHasta.Value);

 

if (filtroG.DocumentoNumero.HasValue)

                    consulta = consulta.Where(c => 
c.RelacionDocumentosVinculados.Any(e => e.Numero == filtroG.DocumentoNumero));

                if (filtroG.DocumentoAno.HasValue)

                    consulta = consulta.Where(c => 
c.RelacionDocumentosVinculados.Any(e => e.Ano == filtroG.DocumentoAno));

 

 

  _____  

De: [email protected] [mailto:[email protected]] En nombre de Eugenio Alonso
Enviado el: Martes, 11 de Mayo de 2010 09:27 p.m.
Para: [email protected]
Asunto: [puntonet] Linq

 

Hola a todos

 

Estoy desarrollando un nuevo proyecto con Linq y no encontré la forma de crear 
una consulta con filtros dinámicos de acuerdo a cierta selección que haga el 
usuario. 

 

Por ejemplo, tengo una página con varios checkbox, y de acuerdo a la selección 
que haga el usuario en estos check, la consulta aplica o no los filtros. 

 

Antes era bastante simple la operatoria, en el stringSql que armaba concatenaba 
o no los filtros según correspondiera.

 

Para hacer algo así con Linq como debería ser la operatoria?

 

 

Saludos y gracias

Eugenio

 

 

Responder a