public void ListagemComItensRepetidosComparecaoComposta()
        {
            IEnumerable <PessoaFisica> pessoas = new List <PessoaFisica>()
            {
                new PessoaFisica()
                {
                    Nome = "Victor Fructuoso", NomeMae = "Ana", CPF = "111.111.111-11"
                },
                new PessoaFisica()
                {
                    Nome = "Victor Fructuoso", NomeMae = "Paula", CPF = "111.111.111-11"
                },
                new PessoaFisica()
                {
                    Nome = "Victor Fructuoso", NomeMae = "Ana", CPF = "222.222.222-22"
                }
            };

            IEnumerable <PessoaFisica> pessoasDiferentes = pessoas.Distinct(GenericComparerFactory <PessoaFisica> .Create(p => new { p.Nome, p.NomeMae }));

            Assert.NotNull(pessoasDiferentes);
            Assert.True(pessoasDiferentes.Any());
            Assert.Equal(2, pessoasDiferentes.Count());
            Assert.DoesNotContain(pessoasDiferentes, p => p.CPF == "222.222.222-22");
        }
 public static IEnumerable <TEntity> Distinct <TEntity>(this IEnumerable <TEntity> source, Func <TEntity, object> predicate)
 {
     return(source.Distinct(GenericComparerFactory <TEntity> .Create(predicate)));
 }