using System; using System.Collections.Generic; using System.Linq; class Sample { public string Value1 { get; set; } public string Value2 { get; set; } public override string ToString() { return Value1 + "/" + Value2; } public override int GetHashCode() { return Value2.GetHashCode(); } public override bool Equals(object obj) { var other = obj as Sample; return other == null ? false : this.Value2 == other.Value2; } } public class Test { public static void Main() { var list = new List() { new Sample{ Value1 = "Apple", Value2="Red" }, new Sample{ Value1 = "Banana", Value2="Yellow" }, new Sample{ Value1 = "Lemon", Value2="Yellow" }, }; list = list.Distinct().ToList(); foreach (var n in list) { Console.WriteLine(n); } } }