using System.Collections.Generic;
namespace ConsoleApplication2
public static void Main(string[] args)
new A {Code = "C1", Description = "DESC1"}, new A {Code = "c1", Description = "desc1"},
new A {Code = "C2", Description = "DESC2"}
var distinct = list.Distinct(new CaseInsensitiveComparer());
Console.WriteLine(distinct.Count());
public class CaseInsensitiveComparer : IEqualityComparer<A>
public bool Equals(A x, A y)
return x.Code.Equals(y.Code, StringComparison.OrdinalIgnoreCase) &&
x.Description.Equals(y.Description, StringComparison.OrdinalIgnoreCase);
public int GetHashCode(A obj)
return obj.Code.ToLowerInvariant().GetHashCode();
public string Code { get; set; }
public string Description { get; set; }