問題タブ [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 投票する
10 に答える
114093 参照

c# - Distinct が LINQ to Objects で動作しない

これは、「LINQ in Action」の例に基づいています。リスト 4.16.

これにより、Jon Skeet が 2 回出力されます。なんで?Author クラスで Equals メソッドをオーバーライドしようとさえしました。それでも Distinct は機能していないようです。私は何が欠けていますか?

編集: == および != 演算子のオーバーロードも追加しました。まだ助けはありません。

0 投票する
3 に答える
2380 参照

c# - 整数キーを持つハッシュテーブル (辞書など)

私はこれについて数日間困惑してきました...私の仮定を自由に打ち負かしてください.

整数キーを持つ Dictionary を使用しています。この場合のキーの値は、ハッシュとして直接使用されると想定しています。これは (キーが狭い範囲でグループ化されている場合)、キー ハッシュ (キー自体と同じですよね?) の分布が同様に狭い範囲になることを意味するので、ハッシュテーブルの選択は不適切でしょうか?

より優れた分散ハッシュを計算するために、素数とモジュロ数学を巧妙に処理する IEqualityComparer を提供する方がよいでしょうか?

0 投票する
4 に答える
6584 参照

c# - C# - リスト.Remove() は常にリストの最初のオブジェクトを削除します

Visual Studio 2008 (C#) での作業... List コレクションを使用して、カスタム クラス (Shift) のインスタンスを格納します。

Remove メソッドを使用して、特定のシフトをリストから削除したいと考えています。

ただし、 List.Remove() は常に最初に見つかったアイテムを削除します。

Shift に IComparable インターフェイスを実装しました。これで十分だと思い、IEqualityComparer の実装を追加しましたが、まだ効果がありません。

これが私の実装の抜粋です。

リージョンI比較メンバー

エンドリージョン

regionIEqualityComparer メンバー

エンドリージョン

それでも、リストに 2 つのシフトが含まれている場合は、「8:00 - 15:00」と言います。"12:00 - 16:00"、Remove("12:00-16:00") を呼び出すと、"8:00 - 15:00" が削除され、後者はコレクションに残ります!

ここで何が問題なのですか?どうも

0 投票する
1 に答える
4665 参照

c# - DataTable とカスタム IEqualityComparer から重複を削除する

次の構造を持つIEqualityComparer<DataRow>から重複行を削除するには、どのように実装する必要がありますか:DataTable

各行には独自の一意の主キーがあるため、デフォルトの比較演算子は機能しません。

IEqualityComparer<DataRow>主キーをスキップして残ったデータのみを比較する実装方法。

私はこのようなものを持っています:

しかし、それは呼び出すだけで呼び出しGetHashCode()ませんEquals()

0 投票する
2 に答える
2797 参照

c# - Can this implementation of an IEqualityComparer be improved?

I don't see any problems with this code, but it feels like I'm missing something. Maybe it is possible to reduce the number of lines. Or is there even a bug to be fixed? I'm open to any suggestions.

0 投票する
1 に答える
432 参照

c# - ハッシュ値のみを使用してオブジェクトを比較する組み込みの IEqualityComparer はありますか?

GetHashCode 値によって返される値によってオブジェクトを比較する組み込みの IEqualityComparer はありますか? 書くのは簡単ですが、カスタム クラスではなく提供されたクラスを使用したいと思います。

現在のコード:

0 投票する
5 に答える
9287 参照

c# - IEqualityComparerReferenceEquals を使用する

を使用するデフォルトのIEqualityComparer<T>実装はありますReferenceEqualsか?

EqualityComparer<T>.Defaultを使用する ObjectComparer を使用しますobject.Equals()。私の場合、オブジェクトは既に を実装していますがIEquatable<T>、これは無視してオブジェクトの参照のみで比較する必要があります。

0 投票する
3 に答える
1346 参照

c# - IEqualityComparer の実装方法公差あり

この質問は、こちらの質問と似ています

私たちは皆、PointFが何であるかを知っていますね。これはデータ構造です:

IEqualityComparer<PointF>寛容に実装するには?私のEqualsコードがこのようなものだとしましょう

質問:GetHashCodeのディクショナリでPointF要素に正しくアクセスできるように、正しい を実装するにはどうすればよいですか?

数日頭を悩ませていますが、それでも満足のいく解決策が見つかりません。

0 投票する
3 に答える
13264 参照

linq - LINQ to Entities Except 句で IEqualityComparer を使用する

サブセットと比較して、サブセット以外のすべてを選択することを決定したいエンティティがあります。

したがって、私のクエリは次のようになります。

このProductsToRemove()メソッドはList<Product>、いくつかのタスクを実行した後に を返します。したがって、最も単純な形式では上記のとおりです。

クラスは次のProductComparer()ようになります。

ただし、次の例外を継続的に受け取ります。

LINQ to Entities はメソッド 'System.Linq.IQueryable 1[UnitedOne.Data.Sql.Product] Except[Product](System.Linq.IQueryable1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEnumerable 1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEqualityComparer1[UnitedOne.Data.Sql.Product])' メソッドを認識せず、このメソッドは認識できませんストア表現に変換されます。

0 投票する
2 に答える
1673 参照

c# - GetHashCode() をオーバーライドする型で Object.GetHashCode() を使用する方法

Equals() の実装/オーバーライドと GetHashCode() のオーバーライドにフィールド (Ab と Ac など) を使用して IEquatable<> を実装するクラス A があり、99% の確率ですべてが正常に動作します。クラス A は、すべてインターフェイス D から継承する階層 (クラス B、C) の一部です。それらはすべて辞書 Dictionary にまとめて格納できるため、すべてが独自のデフォルトの Equals()/GetHashCode() を持っている場合に便利です。

ただし、AI の構築中に、Ab と Ac の値を取得するために何らかの作業を行う必要がある場合があります。それが起こっている間、構築中のインスタンスへの参照を保存したいと思います。その場合、A が提供するデフォルトの Equals()/GetHashCode() オーバーライドを使用したくありません。したがって、オブジェクトの Equals()/GetHashCode() の使用を強制するための ReferenceEqualityComparer を実装することを考えていました。 :

問題は、A が Object.GetHashCode() をオーバーライドするため、(A の外部で) A のインスタンスに対して Object.GetHashCode() を呼び出すにはどうすればよいかということです。

もちろん、A が IEquatable<> を実装せず、作成した辞書に常に IEqualityComparer<> を提供する方法もありますが、別の答えを期待しています。

ありがとう