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?