segunda-feira, 7 de maio de 2012

Realizando Operações 'And' e 'Or' com Linq Expressions

Function ListarCidades(codigoPais As Nullable(Of Integer),
                       codigoEstado As Nullable(Of Integer)) As ActionResult

    Dim vaFiltros As New List(Of Predicate(Of Cidade))

    If codigoPais.HasValue Then
        vaFiltros.Add(Function(cidade) cidade.Estado.Pais.Codigo = codigoPais)
    End If

    If codigoEstado.HasValue Then
        vaFiltros.Add(Function(cidade) cidade.Estado.Codigo = codigoEstado)
    End If

    'Realiza a pesquisa
    Dim vLista = _Fachada.ListarCidadesQuePossuemEstabelecimentos( _
        Function(cidade) vaFiltros.All(Function(predicado) predicado(cidade)))
  
    'Retorna os dados
    Return Json(ListaWeb.converter(vLista), JsonRequestBehavior.AllowGet)
 
End Function

Nenhum comentário: