728 x 90

Left Join com o Entity Framework utilizando LAMBDA Expression

Left Join com o Entity Framework utilizando LAMBDA Expression

O Entity Framework (EF) é um framework de mapeamento objeto-relacional (ORM) de código aberto para a plataforma .NET, desenvolvido pela Microsoft. Neste artigo trago uma dúvida que pode ser recorrente para quem está começando e confesso que, as vezes pode ser um pouco difícil de lembrar também. Se você decora sintaxe, desculpe. Pode me julgar

O Entity Framework (EF) é um framework de mapeamento objeto-relacional (ORM) de código aberto para a plataforma .NET, desenvolvido pela Microsoft.

Neste artigo trago uma dúvida que pode ser recorrente para quem está começando e confesso que, as vezes pode ser um pouco difícil de lembrar também.

Se você decora sintaxe, desculpe. Pode me julgar porque a maioria das coisas que um dia já utilizei pode em algum momento passar batido e ter que consultar.

Acredito que isto é natural, mesmo que depois de alguns anos você não está propriamente desenvolvendo 100% do tempo projetos.

Então, para o artigo trago como que podemos utilizar uma expressão LEFT JOIN no Entity Framework sem usar a sintaxe de queries, que também é possível, mas sim utilizando Lambda Expression.

Como usar a expressão LEFT JOIN no Entity Framework utilizando Lambda Expression

Antes de falar de Lambda Expression, vamos visualizar como fazer a expressão naturalmente utilizando o Entity Framework.

Suponhamos que você tenha duas entidades (tabelas) em seu modelo de dados, por exemplo, Clientes e Pedidos, e deseja fazer um LEFT JOIN para obter todos os clientes, inclusive aqueles que não têm pedidos.

Veja o exemplo:

var query = from cliente in context.Clientes
            join pedido in context.Pedidos on cliente.ClienteId equals pedido.ClienteId into pedidosGroup
            from pedidos in pedidosGroup.DefaultIfEmpty()
            select new
            {
                cliente.Nome,
                Pedido = pedidos != null ? pedidos.NumeroPedido : (int?)null
            };

O mesmo exemplo você pode escrever utilizando expressões Lambda, você terá:

var query = context.Clientes
    .GroupJoin(
        context.Pedidos,
        cliente => cliente.ClienteId,
        pedido => pedido.ClienteId,
        (cliente, pedidos) => new
        {
            Cliente = cliente,
            Pedidos = pedidos.DefaultIfEmpty()
        }
    )
    .SelectMany(
        result => result.Pedidos.DefaultIfEmpty(),
        (result, pedido) => new
        {
            result.Cliente.Nome,
            Pedido = pedido != null ? pedido.NumeroPedido : (int?)null
        }
    );

Simples assim e note que com uma sintaxe mais clean e bem mais fácil de entender.

Lambda Expressions

Uma expressão lambda (lambda expression) é uma funcionalidade presente em várias linguagens de programação que permite criar funções anônimas de forma concisa e inline.

As expressões lambda são frequentemente usadas para criar funções simples e pequenas, que podem ser passadas como argumentos para outras funções ou usadas em contextos onde funções são necessárias.

Elas são especialmente úteis em linguagens que suportam programação funcional.

Posts Carousel

Leave a Comment

Your email address will not be published. Required fields are marked with *

Latest Posts

Top Authors

Most Commented

Featured Videos