Just for variety:
List<A> ADeDupe = class_array
.Select(a => new {X = a.X, Y = a.Y})
.Distinct()
.ToList()
.Select(a => new A(a.X, a.Y))
.ToList();
imho, your code will be more maintainable in the future if you implement the custom Comparer, and simply use 'Distinct, rather than using "tricky" Linq.