问题标签 [iequalitycomparer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
17612 浏览

c# - 使用 IEqualityComparer 进行联合

我只是想从两个列表中删除重复项并将它们合并到一个列表中。我还需要能够定义重复项是什么。我通过 ColumnIndex 属性定义了一个副本,如果它们相同,则它们是重复的。这是我采取的方法:

我找到了一个很好的例子,说明如何在代码段中只需要一次 em 的随机场合编写内联比较器。

然后我只有我的两个列表,并尝试将它们与比较器合并。

然而,结果集为空。

我会误入歧途吗?我已经确认这两个列表的列具有相同的 ColumnIndex 属性。

0 投票
4 回答
277 浏览

c# - 比较两个包含大量对象的列表(第 2 部分)

参考我之前问的问题: 比较两个包含很多对象的列表

看到通过实现 IEqualityComparer 接口进行比较的速度令人印象深刻:这里的示例

正如我在另一个问题中提到的那样,这种比较有助于我在目标文件夹上备份源文件夹。知道我想同步到文件夹,因此我需要比较文件的日期。每当我做类似的事情时:

如果我可以使用大于或等于符号做类似的事情,那就太好了。我也尝试使用 tick 属性,但它不起作用。也许我做错了什么。我相信不可能将事物与实现此接口的小于等号进行比较。此外,我不明白这个类是如何工作的;我只知道它遍历整个列表的速度令人印象深刻。

0 投票
3 回答
1810 浏览

c# - 查看两个列表中匹配的项目

免得说我有两个清单

清单 1:

“汤姆”、“弗兰克”、“莱西”

清单 2:

“弗兰克”、“汤姆”

显示 Tom 和 Fran 被重复需要的查询是什么?

我要比较的列表非常大,如果我执行以下操作:

这需要很长时间。

0 投票
1 回答
549 浏览

linq - Linq Union - IEqualityComparer and # of executions

Out of interest how does the GetHashCode of a concrete implementation of IEqualityComparer work?

The reason that I ask is that I'm using linq to union two collections, and when only the left collection has an item GetHashCode is called twice. Further to that, it's called four times if both collections have one row.

This is rough typing but you'll get the point. GetHashCode is called twice, which I'm guessing is twice for the one item in listOne?

e.g.

Thanks

0 投票
1 回答
1071 浏览

c# - 复制对象属性时从对象列表中删除项目

我对 linq 和 c# 相当陌生,如果我很愚蠢,我很抱歉。我有一个查询,它根据传入的一些变量返回产品信息列表、这些产品的价格和这些产品所在的类别:

就目前而言,这可以正常工作,但是例如说 y 行的 ID = 1 和 Cat1 = Foo,另一行的 ID = 1 和 Cat1 = Bar,那么显然上面的查询会将两者都带回来。有没有办法修改这个查询,以便我可以为每个 ID 带回一行。

我已经用谷歌搜索了大约 2 个小时,并尝试了 group bys、.Distinct 与 IEqualityComparer 以及我找到的其他方法,但没有成功。我的理解还不够好,如果有任何帮助,我将不胜感激!

0 投票
7 回答
189861 浏览

c# - 如何使用 IEqualityComparer

我的数据库中有一些相同编号的铃铛。我想在不重复的情况下获得所有这些。我创建了一个比较类来完成这项工作,但是函数的执行导致函数没有明显的延迟,从 0.6 秒到 3.2 秒!

我做得对还是必须使用其他方法?

0 投票
1 回答
138 浏览

c# - 实施 IEqualityComparer 会修改相等性测试结果吗?

为了让我的优先级队列能够对元素进行排序,我实现了一个IEqualityComparer<MyObject>for (这里的使用并没有真正导入,但无论如何)。 因此,我实现了and方法。MyObject
EqualsGetHashCode

我的问题是:当我这样做时MyObject1 == MyObject2,它是使用我在Equals方法中编写的测试还是经典的相等测试?

0 投票
2 回答
41624 浏览

c# - Linq 自定义 IEqualityComparer 除外

我试图找出两个通用列表之间的区别,如下例所示。即使 t1 和 t2 包含相同的属性,它们也不是同一个对象,所以我需要实现一个 IEqualityComparer。

这似乎与这个例子一起工作,但真正的类有几个其他属性,我也需要对其他几个类做同样的事情。

所以我想知道我是否在重新发明轮子?

有没有更简单的方法来比较两个对象的所有属性?目前,我真的只需要处理包含简单类型的类,但如果我有一个比较器可以处理包含其他类实例的类,那就太好了。

0 投票
1 回答
203 浏览

c# - 如何从重新实现 GetHashCode 的类中获取原始哈希码?

简短的问题:如何获得object.GetHashCode()重新实现的对象的值GetHashCode()

长话短说: 所以我有大约十万个对象,每个对象共享许多(非编译时)公共字符串。常见的情况是如果值相等,它就是同一个实例。

知道了这一点,我想我宁愿使用标准对象比较 ( ReferenceEquals) 而不是完整的字符串比较 - 特别是在字典中经常查找这些比较时。

所以我声明 aclass ReferenceEqualityComparer : IEqualityComparer与 a 一起使用Dictionary<string, TValue>,认为无论如何都有它是有用的,然后开始尝试实现这两种方法。

Equals 很简单,使用object.ReferenceEquals.

但是我如何获得该方法的等价object.GetHashCode()GetHashCode

即我如何获得对象实例的一些表示?

我知道还有其他方法可以做到这一点 - 创建一个类,InternedString该类包含对实现泛型的方法?stringEqualsGetHashCodeReferenceEqualityComparer

0 投票
3 回答
2866 浏览

c# - 为什么我们在 IEqualityComparer 中实现 GetHashCode?

我想List通过使用IEqualityComparer接口从 C# 中获取不同的项目。但我不知道GetHashCode。我已经实现了GetHashCodeEquals方法。以及如何调用Equals方法从具有用户定义数据类型的列表中获取不同的项目。