Fazer filtro avançao em consultas linq
29/09/2014
0
Tenho o seguinte cenário.
Na minha página, possuo 6 combobox. Todas tem na primeira linha da a palavra todos. O que eu quero é o seguinte. Se na combo estiver selecionado a palavra Todos, a minha linq deverá ignorar o where ou algo assim e trazer tudo. Caso tenha algo selecionado, então o where deverá considerar o filtro e trazer tudo considerando o filtro. As combos funcionam assim.
1) Combo UF => Quando seleciono a UF, a combo cidade é carregada, com a palavra todos no início(Index = 0).
2) Combo Tipo => Quando seleciono o tipo(Se é Rede ou Individual - Nome de Farmácia) aí é carregada a combo Descrição(Nome da Farmácia selecionada) com a palavra Todos.
4,5 e 6) São combos individuais, todas com a palavra Todos na primeira linha.
Abaixo minhas linq's, sem os filtros é claro, pois não sei como fazer. Cada lista dessa(linq) receberá um parâmetro, via jquery que será passado para as linq's e elas carregarem conforme os filtros.
Na minha página, possuo 6 combobox. Todas tem na primeira linha da a palavra todos. O que eu quero é o seguinte. Se na combo estiver selecionado a palavra Todos, a minha linq deverá ignorar o where ou algo assim e trazer tudo. Caso tenha algo selecionado, então o where deverá considerar o filtro e trazer tudo considerando o filtro. As combos funcionam assim.
1) Combo UF => Quando seleciono a UF, a combo cidade é carregada, com a palavra todos no início(Index = 0).
2) Combo Tipo => Quando seleciono o tipo(Se é Rede ou Individual - Nome de Farmácia) aí é carregada a combo Descrição(Nome da Farmácia selecionada) com a palavra Todos.
4,5 e 6) São combos individuais, todas com a palavra Todos na primeira linha.
Abaixo minhas linq's, sem os filtros é claro, pois não sei como fazer. Cada lista dessa(linq) receberá um parâmetro, via jquery que será passado para as linq's e elas carregarem conforme os filtros.
public static List<MontaArvoreAcao> montaArvoreAcao() { RupturaEntities db = new RupturaEntities(); var monta_arvore = (from rup in db.Ruptura join ap in db.Apresentacao on rup.Codigo_Apresentacao equals (ap.Codigo_Apresentacao) join mo in db.Motivo on rup.IDMotivo equals (mo.IDMotivo) join pdv in db.PDV on rup.CodigoPDV equals (pdv.CodigoPDV) where rup.IDMotivo != 6 //group rup by new { rup.IDRuptura} into gr select new MontaArvoreAcao { IDRuptura = rup.IDRuptura, DataRuptura = rup.DataRuptura, IDMotivo = rup.IDMotivo, Motivo = rup.Motivo.Motivo1, IDOrigem = rup.IDOrigem, CodigoPDV = rup.CodigoPDV, UF = rup.PDV.UF, Cidade = pdv.Cidade, CnpjDescricao = pdv.Cnpj + " - " + pdv.Descricao, Codigo_Apresentacao = rup.Codigo_Apresentacao, Unidade_Negocio = ap.Unidade_Negocio, Codigo_Unidade_Negocio = ap.Codigo_Unidade_Negocio, Franquia = ap.Franquia, Familia = ap.Familia, Descricao = ap.Descricao }).ToList().OrderBy(r => r.IDMotivo); return monta_arvore.ToList(); } public static List<MontaArvoreAcao> CriarListaArvoreUn() { RupturaEntities db = new RupturaEntities(); var _listaUnidade = ( from r in db.Ruptura join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao) join m in db.Motivo on r.IDMotivo equals (m.IDMotivo) where r.IDMotivo != 6 group r by new { a.Unidade_Negocio, r.IDMotivo } into gr select new MontaArvoreAcao { IDMotivo = gr.Key.IDMotivo, Unidade_Negocio = gr.Key.Unidade_Negocio, Somatorio = gr.Count() } ).Distinct().ToList().OrderBy(r => r.IDMotivo); return _listaUnidade.ToList(); } public static List<MontaArvoreAcao> CriarListaArvoreFamilia() { RupturaEntities db = new RupturaEntities(); var _listaFamilia = ( from r in db.Ruptura join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao) join m in db.Motivo on r.IDMotivo equals (m.IDMotivo) where r.IDMotivo != 6 group r by new { a.Familia, a.Unidade_Negocio, r.IDMotivo } into gr select new MontaArvoreAcao { Familia = gr.Key.Familia, IDMotivo = gr.Key.IDMotivo, Unidade_Negocio = gr.Key.Unidade_Negocio, Somatorio = gr.Count() } ).Distinct().ToList().OrderBy(r => r.Unidade_Negocio); return _listaFamilia.ToList(); } public static List<MontaArvoreAcao> CriarListaArvoreProduto() { RupturaEntities db = new RupturaEntities(); var _listaProd = ( from r in db.Ruptura join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao) join m in db.Motivo on r.IDMotivo equals (m.IDMotivo) where r.IDMotivo != 6 group r by new { a.Descricao, a.Familia, a.Unidade_Negocio, r.IDMotivo } into gr select new MontaArvoreAcao { Descricao = gr.Key.Descricao, Familia = gr.Key.Familia, IDMotivo = gr.Key.IDMotivo, Unidade_Negocio = gr.Key.Unidade_Negocio, Somatorio = gr.Count() } ).Distinct().ToList().OrderBy(r => r.Familia); return _listaProd.ToList(); } public static List<MontaArvoreAcao> CriarListaArvorePdv() { RupturaEntities db = new RupturaEntities(); var _listaPdv = ( from r in db.Ruptura join a in db.Apresentacao on r.Codigo_Apresentacao equals (a.Codigo_Apresentacao) join m in db.Motivo on r.IDMotivo equals (m.IDMotivo) join p in db.PDV on r.CodigoPDV equals(p.CodigoPDV) where r.IDMotivo != 6 group r by new { p.Cnpj, loja = p.Descricao, a.Descricao, a.Familia, a.Unidade_Negocio, r.IDMotivo, r.DataRuptura } into gr select new MontaArvoreAcao { CnpjDescricao = gr.Key.Cnpj + " - " + gr.Key.loja, Descricao = gr.Key.Descricao, DataRuptura = gr.Key.DataRuptura, Familia = gr.Key.Familia, IDMotivo = gr.Key.IDMotivo, Unidade_Negocio = gr.Key.Unidade_Negocio, Somatorio = gr.Count() } ).Distinct().ToList().OrderBy(r => r.Descricao); return _listaPdv.ToList(); }
Pjava
Curtir tópico
+ 1
Responder
Posts
29/09/2014
Pjava
Pelo que vi em alguns exemplos, após carregar a minha variável, aí sim, venho fazendo if e recarregando de acordo com a condição, tipo:
Vamos pegar o listaPdv.
Depois de carregado, eu faria:
Vou testar assim e ver o que dá.
Vamos pegar o listaPdv.
Depois de carregado, eu faria:
if(alguma coisa) { listaPdv = listaPdv.Where(l =>.....) }
Vou testar assim e ver o que dá.
Responder
Clique aqui para fazer login e interagir na Comunidade :)