Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main(string[] args)
- {
- List<Person> personList = new List<Person>();
- personList.Add(new Person { Id = 1, Name = "Julio", Email = "julio@email.com" });
- personList.Add(new Person { Id = 2, Name = "Julio Cesar", Email = "julio@email.com" });
- personList.Add(new Person { Id = 3, Name = "Cesar", Email = "cesar@email.com" });
- personList.Add(new Person { Id = 4, Name = "Julio", Email = "cesar@email.com" });
- personList.Add(new Person { Id = 5, Name = "Cesar", Email = "julio@email.com" });
- personList.Add(new Person { Id = 6, Name = "Julio Cesar", Email = "cesar@email.com" });
- Console.WriteLine("Distinct by Name ---------------------------------------------------------------");
- personList
- .Distinct(new GenericComparer<Person>(p => p.Name)) // You can set que property how to compare, but just one per time
- .ToList()
- .ForEach((person) =>
- {
- Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, E-mail: {person.Email}, ");
- });
- Console.WriteLine();
- Console.WriteLine("Distinct by Email --------------------------------------------------------------");
- personList
- .Distinct(new GenericComparer<Person>(p => p.Email)) // You can set que property how to compare, but just one per time
- .ToList()
- .ForEach((person) =>
- {
- Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, E-mail: {person.Email}, ");
- });
- Console.ReadKey();
- }
- }
- public class Person
- {
- public int Id { get; set; }
- public string Name { get; set; }
- public string Email { get; set; }
- }
- public sealed class GenericComparer<T> : IEqualityComparer<T> where T : class
- {
- private Func<T, object> _expression { get; set; }
- public GenericComparer(Func<T, object> expression)
- {
- _expression = expression;
- }
- public bool Equals(T x, T y)
- {
- var first = _expression.Invoke(x);
- var sec = _expression.Invoke(y);
- return (first != null && first.Equals(sec));
- }
- public int GetHashCode(T obj)
- {
- return _expression.Invoke(obj).GetHashCode();
- }
- }
Add Comment
Please, Sign In to add comment