martes, 10 de noviembre de 2015

Left Join usando expresiones lambda

A continuación voy a mostrarles como realizar un left join entre 2 listas de objetos (A y B) utilizando expresiones lambda.

Caso 1
Si lo que se quiere es obtener una lista con objetos de A que no se encuentren en B, se debe copiar lo siguiente:


 
Dim lista = listaA.SelectMany(Function(a) listaB.Where(Function(b) b.Codigo = a.Codigo).DefaultIfEmpty().Where(Function(w) IsNothing(w)), Function(a, b) New ObjetoBE With {.Codigo = a.Codigo, .Descripcion = a.Descripcion}).ToList()

Caso 2
Si lo que se quiere es obtener la lista de objetos A, pero diferenciando a los objetos que también están en la lista B. Se debe copiar lo siguiente: 

 
Dim lista = listaA.SelectMany(Function(a) listaB.Where(Function(b) b.Codigo = a.Codigo).DefaultIfEmpty() , Function(a, b) New ObjetoBE With { .Codigo = a.Codigo, .Indicador = If(IsNothing(b),0,1) }).ToList()

Saludos.

No hay comentarios.:

Publicar un comentario