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"); }
protected override int FindCore(PropertyDescriptor prop, object key) { if (key is T) { GenericIComparer <T> comparer = GenericComparerFactory.GetComparer <T>(prop.Name, false); for (Int32 index = 0; index < Items.Count; ++index) { if (comparer.Compare(Items[index], (T)key) == 0) { return(index); } } return(-1); } throw new NotSupportedException("Cannot compare Apple With Orange"); }
private void InnerPerformSort() { if (_currentSortPropertyDescriptor == null) { return; } List <T> temp = Items.ToList(); Items.Clear(); GenericIComparer <T> cmp = GenericComparerFactory.GetComparer <T>(_currentSortPropertyDescriptor.Name, _currentSortDirection == ListSortDirection.Descending); temp.Sort(cmp); foreach (T element in temp) { Items.Add(element); } }
public static IEnumerable <TEntity> Distinct <TEntity>(this IEnumerable <TEntity> source, Func <TEntity, object> predicate) { return(source.Distinct(GenericComparerFactory <TEntity> .Create(predicate))); }