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