Linq-запрос для получения различных значений в списке

Предположим, это мой член класса

class Member 
{
    public string CategoryId { get; set; }
    public string MemberName { get; set; }
    public int Distance { get; set; }
}

И это список.

var list = new List<Member>();
list.Add(new { CategoryId = "01", MemberName="andy" Distance=3});
list.Add(new { CategoryId = "02", MemberName="john" Distance=5});
list.Add(new { CategoryId = "01", MemberName="mathew" Distance=7});
list.Add(new { CategoryId = "03", MemberName="bakara" Distance=2});

Может кто-нибудь, пожалуйста, предложите логику / запрос linq, чтобы получить список, имеющий отличный / уникальный categoryID с кратчайшим расстоянием.

output должно быть :

list.Add(new { CategoryId = "01", MemberName="andy" Distance=3});
list.Add(new { CategoryId = "02", MemberName="john" Distance=5});
list.Add(new { CategoryId = "03", MemberName="bakara" Distance=2});

Ответы на вопрос(7)

Ваш ответ на вопрос