C#学习教程:删除列表中的重复对象(C#)但是如何根据对象的特定属性删除重复项呢?例如,我有一个TimeMetric类。这个TimeMetric类有两个属性:MetricText和MetricTime。我有一个名为MetricList的列表。我想删除任何具有相同MetricText属性的重复TimeMetric。TimeMetric的值可以相同,但是如果任何一个TimeMetric具有相同的MetricText,那么它必须是唯一的。您需要使用Distinct的第二个重载,它将IEqualityComparer的实例作为第二个参数。像这样定义一个比较器:}publicintGetHashCode(TimeMetricobj){returnobj.MetricText.GetHashCode();}}重要说明:上面的代码不会检查MetricText属性是否为null(这听起来很像,因为它很可能是一个字符串)。如果MetricText为空,您应该这样做并从GetHashCode返回0。另一方面,如果MetricText的类型是值类型,则不需要进行任何修改。然后:varlist=newList{...};varunique=list.Distinct(newMyComparer());使用linq:varlist=list.GroupBy(i=>i.MetricText).Select(g=>g.First()).ToList();或者传入一个使用此属性的比较器:}publicintGetHashCode(TimeMetricobj){returnobj.MetricText.GetHashCode();}}....list.Distinct(newmtCompare());您可以对IEqualityComparer使用Distinct重载。你的IEqualityComparer实现的equals方法如下:以上就是C#学习教程分享的全部内容:删除列表中的重复对象(C#)。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—boolEquals(TimeMetricx,TimeMetricy){returnx.MetricText.Equals(y.MetricText);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
