¿Por qué no hay un método Linq para devolver valores distintos por un predicado?

Quiero obtener los valores distintos en una lista, pero no mediante la comparación de igualdad estándar.

Lo que quiero hacer es algo como esto:

return myList.Distinct( (x, y) => x.Url == y.Url );

No puedo, no hay ningún método de extensión en Linq que haga esto, solo uno que tome unIEqualityComparer.

Puedo hackearlo con esto:

return myList.GroupBy( x => x.Url ).Select( g => g.First() );

Pero eso parece desordenado. Tampoco hace lo mismo: solo puedo usarlo aquí porque tengo una sola clave.

También podría agregar el mío:

public static IEnumerable<T> Distinct<T>( 
    this IEnumerable<T> input, Func<T,T,bool> compare )
{
    //write my own here
}

Pero eso parece más bien escribir algo que debería estar allí en primer lugar.

¿Alguien sabe por qué este método no existe?

¿Me estoy perdiendo de algo

Respuestas a la pregunta(4)

Su respuesta a la pregunta