(OBS: Este post é continuação do artigo LINQ Extensions)

GroupJoin: Correlaciona os elementos de duas sequências baseando-se na igualdade de chaves.

// GroupJoin: Correlaciona os elementos de duas sequências baseando-se
//            na igualdade de chaves.
var queryGroupJoin =
    Pessoas.GroupJoin(Animais,
                        pessoa => pessoa,
                        animal => animal.Dono,
                        (pessoa, colecaoAnimais) =>
                            new
                            {
                                NomeDoDono = pessoa.Nome,
                                Animais = colecaoAnimais
                            });
foreach (var obj in queryGroupJoin)
{
    Console.WriteLine("{0}:", obj.NomeDoDono);
    if (obj.Animais.Count() == 0)
        Console.WriteLine("  Nenhum animal");
    else
        foreach (var animal in obj.Animais)
            Console.WriteLine("  {0} ({1})", 
                animal.Nome, 
                animal.Especie.ToString());
}
// Resultado no console:
// José:
//   Fred (Cachorro)
//   Billy (Cachorro)
// Antonio:
//   Pandora (Cachorro)
//   Teny (Cachorro)
//   Cindy (Cachorro)
// Maria:
//   Crodô (Piriquito)
//   Frodo (Piriquito)
// Fernanda:
//   Nenhum animal
// João:
//   Nenhum animal

Anúncios