Por que não existe um método Linq para retornar valores distintos por um predicado?

Quero obter os valores distintos em uma lista, mas não pela comparação de igualdade padrão.

O que eu quero fazer é algo como isto:

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

Não posso, não há nenhum método de extensão no Linq que faça isso - apenas um que leva umIEqualityComparer.

Eu posso resolver isso com isso:

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

Mas isso parece confuso. Também não faz exatamente a mesma coisa - só posso usá-lo aqui porque tenho uma única chave.

Eu também poderia adicionar o meu:

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

Mas isso parece um pouco como escrever algo que deveria estar lá em primeiro lugar.

Alguém sabe por que esse método não existe?

Estou esquecendo de algo?

questionAnswers(4)

yourAnswerToTheQuestion