Fazer filtro avançao em consultas linq
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
Curtidas 1
Respostas
Pjava
29/09/2014
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á.
GOSTEI 0