CONSULTA COM LINQ COM PARÂMETROS

PERCIFILHO 20/01/2017 13:30:19
#470890
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?
DS2T 20/01/2017 15:32:19
#470894
Resposta escolhida
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!
PERCIFILHO 20/01/2017 16:00:52
#470896
Valeu, DS2T era isso mesmo que eu precisava. Muito obrigado e tenha um ótimo final de semana.
Até mais;
MAXCIM 20/01/2017 16:33:18
#470898
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
Tópico encerrado , respostas não são mais permitidas