CSharp · Console
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
public class Program
{
public static IEnumerable<T> VerificarItensRepetidos<T>(IEnumerable<T> listString)
{
List<object> duplicateKeys = new List<object>();
List<object> notDuplicateKeys = new List<object>();
foreach (var text in listString)
{
if (notDuplicateKeys.Contains(text))
{
duplicateKeys.Add(text);
}
else
{
notDuplicateKeys.Add(text);
}
}
return duplicateKeys.Cast<T>();
}
public static void Main()
{
List<Pessoa> listaPessoas = new List<Pessoa>();
//Adiciona algumas pessoas a lista
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "George",
DataNascimento = DateTime.ParseExact("23/03/2000", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "João",
DataNascimento = DateTime.ParseExact("05/09/1997", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "Giovane",
DataNascimento = DateTime.ParseExact("23/03/2000", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "Maria",
DataNascimento = DateTime.ParseExact("11/07/1990", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "Antonio",
DataNascimento = DateTime.ParseExact("23/03/2000", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
listaPessoas.Add(new Pessoa{
Id = 1,
Nome = "José",
DataNascimento = DateTime.ParseExact("11/07/1990", "dd/MM/yyyy", CultureInfo.InvariantCulture)
});
Console.WriteLine("Todas as pessoas da lista: ");
foreach(var pessoa in listaPessoas)
{
Console.WriteLine(string.Format("id: {0}, Nome: {1}, Data Nascimento: {2}", pessoa.Id, pessoa.Nome, pessoa.DataNascimento.ToShortDateString()));
}
Console.WriteLine("");
var nascimentosRepetidos = VerificarItensRepetidos(listaPessoas.Select(d => d.DataNascimento).ToList());
//Utilizei o Distinct aqui para imprimir apenas uma vez cada grupo
foreach(var data in nascimentosRepetidos.Distinct())
{
var pessoasMesmoGrupoDataNasc = listaPessoas.Where(d => d.DataNascimento == data).ToList();
Console.WriteLine(string.Format("Pessoas do grupo de data {0}", data.ToShortDateString()));
foreach(var pessoa in pessoasMesmoGrupoDataNasc)
{
Console.WriteLine(string.Format("id: {0}, Nome: {1}, Data Nascimento: {2}", pessoa.Id, pessoa.Nome, pessoa.DataNascimento.ToShortDateString()));
}
}
}
}
public class Pessoa
{
public int Id { get; set; }
public string Nome { get; set; }
public DateTime DataNascimento { get; set; }
}