Linq consulta para obtener los distintos valores en una lista.

Supongamos que esta es mi clase miembro

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

Y, esta es la lista.

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});

¿Alguien puede sugerir la consulta lógica / linq para obtener la lista que tiene una ID de categoría distinta / única con la distancia más corta?

losoutput debiera ser :

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});

Respuestas a la pregunta(7)

Su respuesta a la pregunta