Olá!
Tenho uma dúvida que tenho certeza que muitos ainda vão terão (se já não tiveram) em relação a busca dinâmica. Por ex:
Em um formulário com alguns campos, por exemplo, Nome, Cidade, uma combo de Departamentos, e uma de Cargos, ambas populadas por seus respectivos objetos, onde o usuário fará uma busca de que se não preencher nenhum campo e nem selecionar nada nas combos, a consulta deverá retornar todos os objetos encontrados. O problema é na comparação dos objetos Departamento e Cargos.
Estou fazendo assim, mas o resultado não é satisfatório:
public Collection<clsUsuarios> listarUsuarios(String nome
string cidade,
clsDepartamento objDepto,
clsCargo objCargo) {
db = ServidorSingleton.obterServidor().OpenClient();
return new Collection<clsUsuarios>(db.Query<clsUsuarios>(delegate(clsUsuarios objUsuario)
{
return objUsuario.Nome.StartsWith(nome)
&& objUsuario.Cidade.StartsWith(cidade)
//Nestes casos abaixo, se não for selecionado um depto e um cargo na combo, não retorna nada
//A minha necessidade é que se não for selecionado nada, retorne apenas com as condições de cima
&& objUsuario.Departamento.Codigo == objDepto.Codigo
&& objUsuario.Cargo.Codigo == objCargo.Codigo;
}));
}
Não sei se deu para entender...
Teóricamente, bastaria um if antes das comparações com os objetos, mas a condição "&&" não permite colocar no meio. Gostaria de uma solução "elegante" para esse dilema.
Grato pela atenção.