更新时间:2023-02-13 22:09:24
您需要使用
需要一个 IEqualityComparer< TimeMetric> ;
实例作为第二个参数。定义一个比较器:
You need to use the second overload of Distinct
that takes an IEqualityComparer<TimeMetric>
instance as a second parameter. Define a comparer like this:
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
(这听起来可能是,因为它最可能是一个字符串
)。你应该这样做,并从 GetHashCode
如果 MetricText
返回 0
是 null
。另一方面,如果 MetricText
的类型是值类型,则不需要执行任何修改。
Important note: The above code does not check for the case where the MetricText
property is null
(and it sounds like it could be, since it's most probably a string
). You should do that and return 0
from GetHashCode
if MetricText
is null
. On the other hand, if the type of MetricText
is a value type, you don't need to perform any modification.
然后:
var list = new List<TimeMetric> { ... };
var unique = list.Distinct(new MyComparer());