using System.Collections.Generic;
public static void Main(string[] args)
var listaDeProdutos = new List<Produto>();
listaDeProdutos.Add(obj1);
listaDeProdutos.Add(obj2);
listaDeProdutos.Add(obj3);
listaDeProdutos.Add(obj4);
listaDeProdutos.Add(obj5);
var novaListaDeProdutos = listaDeProdutos.OrderBy(x => x.Valor).Distinct(new Produto()).ToList();
novaListaDeProdutos.ForEach(x => Console.WriteLine(x));
public class Produto : IEqualityComparer<Produto>
public string Nome { get; set; }
public decimal Valor { get; set; }
public bool Equals(Produto x, Produto y)
return x.Nome.Equals(y.Nome);
public int GetHashCode(Produto obj)
return obj.Nome.GetHashCode();
public override string ToString()
return string.Format("{0} - {1}", this.Nome, this.Valor);