Я хочу получить отдельные значения в списке, но не путем стандартного сравнения на равенство.
Что я хочу сделать, это примерно так:
return myList.Distinct( (x, y) => x.Url == y.Url );
Не могу, в Linq нет метода расширения, который бы это делал - только тот, который принимает IEqualityComparer
.
Я могу взломать это с помощью:
return myList.GroupBy( x => x.Url ).Select( g => g.First() );
Но это кажется грязным. Это также не совсем то же самое - я могу использовать это только здесь, потому что у меня есть один ключ.
Я также мог бы добавить свой собственный:
public static IEnumerable<T> Distinct<T>(
this IEnumerable<T> input, Func<T,T,bool> compare )
{
//write my own here
}
Но это действительно похоже на написание чего-то, что должно быть там во-первых.
Кто-нибудь знает, почему этот метод не существует?
Я что-то упустил?