草庐IT

iequalitycomparer

全部标签

c# - Linq 除了自定义 IEqualityComparer

我正在尝试找出两个通用列表之间的区别,如下例所示。尽管t1和t2包含相同的属性,但它们不是同一个对象,因此我需要实现一个IEqualityComparer。这似乎适用于此示例,但实际类还有其他几个属性,我还需要对其他一些类执行相同的操作。所以我想知道我是不是在重新发明轮子?是否有更简单的方法来比较两个对象的所有属性?目前,我真的只需要处理包含简单类型的类,但如果我有一个比较器可以处理包含其他类实例的类,那就太好了。voidMain(){vart1=newSizes{Name="Test",Size=1};vart2=newSizes{Name="Test",Size=1};varlis

c# - Linq 除了自定义 IEqualityComparer

我正在尝试找出两个通用列表之间的区别,如下例所示。尽管t1和t2包含相同的属性,但它们不是同一个对象,因此我需要实现一个IEqualityComparer。这似乎适用于此示例,但实际类还有其他几个属性,我还需要对其他一些类执行相同的操作。所以我想知道我是不是在重新发明轮子?是否有更简单的方法来比较两个对象的所有属性?目前,我真的只需要处理包含简单类型的类,但如果我有一个比较器可以处理包含其他类实例的类,那就太好了。voidMain(){vart1=newSizes{Name="Test",Size=1};vart2=newSizes{Name="Test",Size=1};varlis

c# - 如何使用 IEqualityComparer、LinQ Distinct 从集合中删除重复项

我无法从集合中删除重复项,我已经为类Employee实现了IEqualityComparer,但我仍然没有得到输出staticvoidMain(string[]args){ListEmployeecollection=newList();Employeecollection.Add(newEmploye("abc","def"));Employeecollection.Add(newEmploye("lmn","def"));Employeecollection.Add(newEmploye("abc","def"));IEnumerablecoll=Employeecollectio

c# - 如何使用 IEqualityComparer、LinQ Distinct 从集合中删除重复项

我无法从集合中删除重复项,我已经为类Employee实现了IEqualityComparer,但我仍然没有得到输出staticvoidMain(string[]args){ListEmployeecollection=newList();Employeecollection.Add(newEmploye("abc","def"));Employeecollection.Add(newEmploye("lmn","def"));Employeecollection.Add(newEmploye("abc","def"));IEnumerablecoll=Employeecollectio

c# - 更喜欢 EqualityComparer<T> 而不是 IEqualityComparer<T>

摘自MSDN上IEqualityComparer备注部分:WerecommendthatyouderivefromtheEqualityComparerclassinsteadofimplementingtheIEqualityComparerinterface,becausetheEqualityComparerclasstestsforequalityusingtheIEquatable.EqualsmethodinsteadoftheObject.Equalsmethod....我不理解引用中关于我们为什么更愿意从EqualityComparer类派生而不是实现IEquality

c# - 更喜欢 EqualityComparer<T> 而不是 IEqualityComparer<T>

摘自MSDN上IEqualityComparer备注部分:WerecommendthatyouderivefromtheEqualityComparerclassinsteadofimplementingtheIEqualityComparerinterface,becausetheEqualityComparerclasstestsforequalityusingtheIEquatable.EqualsmethodinsteadoftheObject.Equalsmethod....我不理解引用中关于我们为什么更愿意从EqualityComparer类派生而不是实现IEquality

C# Distinct on IEnumerable<T> 与自定义 IEqualityComparer

这就是我想要做的。我正在使用LINQtoXML查询一个XML文件,这给了我一个IEnumerable>对象,其中T是我的“Village”类,填充了此查询的结果。有些结果是重复的,所以我想对IEnumerable对象执行Distinct(),如下所示:publicIEnumerableGetAllAlliances(){try{IEnumerablealliances=fromallianceinxmlDoc.Elements("Village")wherealliance.Element("AllianceName").Value!=String.Emptyorderbyallian

C# Distinct on IEnumerable<T> 与自定义 IEqualityComparer

这就是我想要做的。我正在使用LINQtoXML查询一个XML文件,这给了我一个IEnumerable>对象,其中T是我的“Village”类,填充了此查询的结果。有些结果是重复的,所以我想对IEnumerable对象执行Distinct(),如下所示:publicIEnumerableGetAllAlliances(){try{IEnumerablealliances=fromallianceinxmlDoc.Elements("Village")wherealliance.Element("AllianceName").Value!=String.Emptyorderbyallian

c# - 在 Dictionary 与 HashCode 和 Equals() 中使用 IEqualityComparer 的效率

我觉得标题很清楚。我想知道使用IEqualityComparer时是否有一定的效率开销在Dictionary提供一个时它是如何工作的?谢谢 最佳答案 它更快吗?从游戏开发者的角度来看,如果您的键是值类型(结构、原语、枚举等),则提供您自己的EqualityComparer明显更快-因为EqualityComparer.Default将值框起来。作为一个真实的例子,ManagedDirectX广告牌示例曾经以大约C++版本速度的30%运行;所有其他样本的运行速度约为90%。这样做的原因是广告牌是使用默认比较器排序的(因此被装箱),因为

c# - linq Except 和自定义 IEqualityComparer

我正在尝试在两个字符串列表上实现自定义比较器,并使用.Except()linq方法获取不属于列表之一的字符串。我进行自定义比较器的原因是因为我需要进行“模糊”比较,即一个列表中的一个字符串可以嵌入到另一个列表中的字符串中。我做了以下比较器publicclassItemFuzzyMatchComparer:IEqualityComparer{boolIEqualityComparer.Equals(stringx,stringy){return(x.Contains(y)||y.Contains(x));}intIEqualityComparer.GetHashCode(stringob