2
respostas

Mais de um filtro no FirstOrDefault

Boa noite, pessoal.

Como faço mais de um filtro na consulta LINQ? Abaixo exemplo de um filtro.

[HttpGet("{id}")]
    public IActionResult RecuperaFilmesPorId(int id) 
    {
        var filme =  filmes.FirstOrDefault(filme => filme.Id == id);
        if (filme == null)
            return NotFound();
        else
            return Ok(filme);
    }
Seu eu quisesse filtrar por tempo de duração e gênero por exemplo, como ficaria.?
2 respostas

Oi, Rodrigo


[HttpGet("{id}")]
public IActionResult RecuperaFilmesPorId(int id, int duracaoMinima, string genero)
{
    var filme = filmes.FirstOrDefault(filme => filme.Id == id && filme.Duracao >= duracaoMinima && filme.Genero == genero);
    if (filme == null)
        return NotFound();
    else
        return Ok(filme);
}

Rodrigo,

duracaoMinima e genero como parâmetros opcionais


[HttpGet("{id}")]
public IActionResult RecuperaFilmesPorId(int id, int duracaoMinima = 0, string genero = "")
{
    var filmesFiltrados = filmes.Where(filme => filme.Id == id);

    if (duracaoMinima > 0)
    {
        filmesFiltrados = filmesFiltrados.Where(filme => filme.Duracao >= duracaoMinima);
    }

    if (!string.IsNullOrEmpty(genero))
    {
        filmesFiltrados = filmesFiltrados.Where(filme => filme.Genero == genero);
    }

    var filme = filmesFiltrados.FirstOrDefault();

    if (filme == null)
        return NotFound();
    else
        return Ok(filme);
}