/кошка/1
/кошка/2
/собака/1
/собака/2
/тигр/1
Как сделать чтобы в результирующем списке были только те элементы, у которых значения между /*/ уникальные.
результат
/кошка/1
/собака/1
/тигр/1
Есть вариант заюзать Distinct, но он работает по полному соответсвию.
List
А как сделать чтобы он брал значение между /*/ и выбрал среди них уникальные. Мне кажется надо использовать lambda выражения.
Ответ
в Distinct можно передать свой "сравниватель на одинаковость" - IEqualityComparer
class PartialComparer : IEqualityComparer
public int GetHashCode(string obj)
{
return GetComparablePart(obj).GetHashCode();
}
}
class Program
{
static void Main(string[] args)
{
List
// "/кошка/1"
// "/собака/1"
// "/тигр/1"
var result = list.Distinct(new PartialComparer()).ToList();
}
}
Комментариев нет:
Отправить комментарий