Вам необходимо использовать вторую перегрузку Distinct
, которая принимает экземпляр IEqualityComparer<TimeMetric>
в качестве второго параметра. Определите компаратор следующим образом:
class MyComparer : IEqualityComparer<TimeMetric>
{
public bool Equals(TimeMetric x, TimeMetric y)
{
return x.MetricText.Equals(y.MetricText);
}
public int GetHashCode(TimeMetric obj)
{
return obj.MetricText.GetHashCode();
}
}
Важное примечание: Приведенный выше код не проверяет случай, когда свойство MetricText
имеет значение null
(и звучит так, как может, поскольку, скорее всего, string
) Вы должны сделать это и вернуть 0
из GetHashCode
, если MetricText
равно null
. С другой стороны, если тип MetricText
является типом значения, вам не нужно выполнять никаких изменений.
А потом:
var list = new List<TimeMetric> { ... };
var unique = list.Distinct(new MyComparer());