Considerando a chamáda: produtoDao.BuscaPorNomePrecoCategoria("Mouse", 0 , "Informática")
Como é possível combinar os filtros no where dessa forma, pois nesse caso sobrescrevemos a variável "busca" que já haviam entrado primeiro if, por exemplo.
O código funciona, mas não entendi o porquê.
class ProdutoDAO {
private EntidadesContext ctx;
public ProdutoDAO(EntidadesContext ctx) {
this.ctx = ctx;
}
public IList<Produto> BuscaPorPrecoNomeCategoria(string nome,decimal preco,string categoria) {
var busca = from p in this.ctx.Produtos select p;
if(!String.IsNullOrEmpty(nome)) {
busca = busca.Where(p=> p.Nome == nome);
}
if(preco > 0) {
busca = busca.Where(p => p.Preco == preco);
}
if(!String.IsNullOrEmpty(categoria)) {
busca = busca.Where(p => p.Categoria.Nome == categoria);
}
return busca.ToList();
}
}