問題タブ [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.
c# - Distinct が LINQ to Objects で動作しない
これは、「LINQ in Action」の例に基づいています。リスト 4.16.
これにより、Jon Skeet が 2 回出力されます。なんで?Author クラスで Equals メソッドをオーバーライドしようとさえしました。それでも Distinct は機能していないようです。私は何が欠けていますか?
編集: == および != 演算子のオーバーロードも追加しました。まだ助けはありません。
c# - 整数キーを持つハッシュテーブル (辞書など)
私はこれについて数日間困惑してきました...私の仮定を自由に打ち負かしてください.
整数キーを持つ Dictionary を使用しています。この場合のキーの値は、ハッシュとして直接使用されると想定しています。これは (キーが狭い範囲でグループ化されている場合)、キー ハッシュ (キー自体と同じですよね?) の分布が同様に狭い範囲になることを意味するので、ハッシュテーブルの選択は不適切でしょうか?
より優れた分散ハッシュを計算するために、素数とモジュロ数学を巧妙に処理する IEqualityComparer を提供する方がよいでしょうか?
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" が削除され、後者はコレクションに残ります!
ここで何が問題なのですか?どうも
c# - DataTable とカスタム IEqualityComparer から重複を削除する
次の構造を持つIEqualityComparer<DataRow>
から重複行を削除するには、どのように実装する必要がありますか:DataTable
各行には独自の一意の主キーがあるため、デフォルトの比較演算子は機能しません。
IEqualityComparer<DataRow>
主キーをスキップして残ったデータのみを比較する実装方法。
私はこのようなものを持っています:
と
しかし、それは呼び出すだけで呼び出しGetHashCode()
ませんEquals()
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.
c# - ハッシュ値のみを使用してオブジェクトを比較する組み込みの IEqualityComparer はありますか?
GetHashCode 値によって返される値によってオブジェクトを比較する組み込みの IEqualityComparer はありますか? 書くのは簡単ですが、カスタム クラスではなく提供されたクラスを使用したいと思います。
現在のコード:
c# - IEqualityComparerReferenceEquals を使用する
を使用するデフォルトのIEqualityComparer<T>
実装はありますReferenceEquals
か?
EqualityComparer<T>.Default
を使用する ObjectComparer を使用しますobject.Equals()
。私の場合、オブジェクトは既に を実装していますがIEquatable<T>
、これは無視してオブジェクトの参照のみで比較する必要があります。
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.IQueryable
1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEnumerable1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEqualityComparer
1[UnitedOne.Data.Sql.Product])' メソッドを認識せず、このメソッドは認識できませんストア表現に変換されます。
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<> を提供する方法もありますが、別の答えを期待しています。
ありがとう