CONSULTA COM LINQ COM PARÂMETROS
Boa tarde pessoal!
preciso fazer uma consulta ao banco de dados com Linq. No caso, a sintaxe é assim:
var dados = from cli in db.Clientes
where cli.Nome.Contains(txtNome.Text)
orderby cli.Nome
select cli
Eu gostaria de saber se teria como eu fazer essa consulta tipo parametrizada, da seguinte forma:
string _tabela = [Ô]from cli in db.Clientes;
string _condicao = [Ô]where [Ô];
string _ordenar = [Ô]orderby [Ô];
Ou seja, esses parâmetros serão definidos pelo usuário dependendo dos campos que ele solicitar. AÃ, ficaria mais ou menos assim:
var dados = _tabela + [Ô]
[Ô]
+ _condicao + [Ô] txtCondicao.Text + [Ô]
[Ô]
+ _ordenar + [Ô] cmbOrdem.Text + [Ô]
[Ô]
+ select cli
Só que com esses parâmetros sendo string, não funciona.
Alguém teria alguma sugestão?
preciso fazer uma consulta ao banco de dados com Linq. No caso, a sintaxe é assim:
var dados = from cli in db.Clientes
where cli.Nome.Contains(txtNome.Text)
orderby cli.Nome
select cli
Eu gostaria de saber se teria como eu fazer essa consulta tipo parametrizada, da seguinte forma:
string _tabela = [Ô]from cli in db.Clientes;
string _condicao = [Ô]where [Ô];
string _ordenar = [Ô]orderby [Ô];
Ou seja, esses parâmetros serão definidos pelo usuário dependendo dos campos que ele solicitar. AÃ, ficaria mais ou menos assim:
var dados = _tabela + [Ô]
[Ô]
+ _condicao + [Ô] txtCondicao.Text + [Ô]
[Ô]
+ _ordenar + [Ô] cmbOrdem.Text + [Ô]
[Ô]
+ select cli
Só que com esses parâmetros sendo string, não funciona.
Alguém teria alguma sugestão?
Você pode usar LINQ via funções lambdas.
var dados = from cli in db.Clientes
if (existeFiltro)
{
dados = dados.Where(a => a.nome = filtroNome);
}
if (existeORderBy)
{
dados = dados.OrderBy(a=>a.nome);
}
algo mais ou menos assim.
Abraços!
var dados = from cli in db.Clientes
if (existeFiltro)
{
dados = dados.Where(a => a.nome = filtroNome);
}
if (existeORderBy)
{
dados = dados.OrderBy(a=>a.nome);
}
algo mais ou menos assim.
Abraços!
Valeu, DS2T era isso mesmo que eu precisava. Muito obrigado e tenha um ótimo final de semana.
Até mais;
Até mais;
uma outra maneira de fazer a consulta é usar o predicate builder,
o predicate builder pode ser acumulativo (usar varias condiçoes)
http://www.c-sharpcorner.com/UploadFile/c42694/dynamic-query-in-linq-using-predicate-builder/
https://social.msdn.microsoft.com/Forums/pt-BR/1e5f6ca2-7a3c-42cb-83c7-8c545038e998/linq-to-sql-and-predicatebuilder?forum=linqtosql
http://stackoverflow.com/questions/11490893/how-does-predicatebuilder-work
o predicate builder pode ser acumulativo (usar varias condiçoes)
http://www.c-sharpcorner.com/UploadFile/c42694/dynamic-query-in-linq-using-predicate-builder/
https://social.msdn.microsoft.com/Forums/pt-BR/1e5f6ca2-7a3c-42cb-83c7-8c545038e998/linq-to-sql-and-predicatebuilder?forum=linqtosql
http://stackoverflow.com/questions/11490893/how-does-predicatebuilder-work
Tópico encerrado , respostas não são mais permitidas