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

.net - IEqualityComparer許容範囲あり。GetHashCodeを実装する方法は?

再利用可能なDoubleEqualityComparer(カスタム許容値:「epsilon」コンストラクターパラメーターを使用)を実装して、doubleのシーケンスでのLINQの使用を容易にします。例えば:

GetHashCodeを実装する正しい方法は何ですか?コードは次のとおりです。

PS:私はいつでも同じ値を返すことができます(例:GetHashCode(double obj){return 0;})常にEquals(double、double)メソッドの呼び出しを強制します(あまりパフォーマンスが良くない、私は知っています)が、これを覚えています比較器を辞書で使用すると、解決策によって問題が発生します。

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

c# - ラムダ式で等値を指定する

2 つのコレクションを比較したい。これらのうちの 1 つは で、もう 1 つはList<string>ですList<Book>。Book には type の Isbn プロパティがあり、stringそのようなものを書きたい:

メソッドに等号を指定したいのですが。出来ますか ?または、IEqualityComparer インターフェイスを実装する BookComparer を作成する必要がありますか?

よろしく、

フロリアン

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

c# - IEqualityComparer の実装任意のクラス (匿名を含む) の任意のプロパティを比較するため

IEqualityComparer を実装するこのきちんとしたクラスを書いているので、任意の匿名型 (または実際にはプロパティを持つ任意の型) を渡すことができ、型のプロパティ値を比較することで自動的に型を比較します。

これは、何度も使用できる便利な小さなヘルパー関数だと思いました。

これを使用するには、次のことを行う必要があります。

それはそれで十分ですが、それが返す obj 変数をどうすればよいのでしょうか?

個別の拡張関数のオーバーロードはこれを受け入れません。IEqualityComparer 型が表示されないためです。もちろん、オブジェクトのみが表示されます。

これも機能しません。型/名前空間が見つかりません (赤い下線)。

どうすればこれをまっすぐにできますか?

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

c# - プロパティの値が最も高いリスト内の個別のアイテムを取得する

2 つの文字列プロパティ、名前、およびバージョン文字列 (例: "1.0.0") を含むオブジェクト AppDetail があります。

同じ名前で異なるバージョン文字列の重複を含む List< AppDetail > が与えられた場合、一意の名前と最新のバージョンを持つ List を作成するにはどうすればよいですか?

たとえば、初期リストのこれら 2 つの項目から

固有のアイテム リストには、2 番目のアイテムのみが含まれるようにします。これは、バージョンが最も高いためです。

バージョンを比較するには、Version オブジェクトを作成する IComparer を作成し、次に version.CompareTo(version) メソッドを使用する必要があります。しかし、List.Distinct オーバーロードは IComparer ではなく IEqualityComparer のみを受け入れるため、これは役に立ちません。

何かご意見は?ありがとう

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

c# - C#の子配列に基づく配列内の重複項目のフィルタリング

ベースコードを持つ人のリストと場所の配列があります。リスト内の同じ場所でベースコードが異なる人を排除し、場所が異なる人を保持する必要があります。

IEqualityComparer を使用して、linq でグループ化しようとしましたが、成功しませんでした。どうすればよいか教えてください。これは私のクラス構造です

データ例

リストから Person 2 を除外し、Person 1 と Person 3 を保持したいのですが、アドバイスをお願いします

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

.net - KeyedCollection文字列大文字と小文字を区別しない

ドキュメントに従ってみましたが、動作させることができません。キー文字列を含むKeyedCollectionがあります。

KeyedCollectionで文字列キーの大文字と小文字を区別しないようにするにはどうすればよいですか?

辞書では、ctorでStringComparer.OrdinalIgnoreCaseを渡すことができます。

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

c# - ジェネリック メソッドで null の非クラス制約型パラメーターのインスタンスをチェックする

私は現在、パラメーターを操作する前にパラメーターの検証を行いたい汎用メソッドを持っています。具体的には、型パラメーターのインスタンスがT参照型の場合、それが参照型かどうかを確認し、nullnullの場合はスローします。ArgumentNullException

次のようなもの:

class制約を使用して型パラメーターを制約したくないことに注意してください。

「ジェネリック型をデフォルト値と比較するにはどうすればよいですか?」に関するMarc Gravellの回答を使用できると思いました。、次のようにクラスを使用します。EqualityComparer<T>

しかし、次の呼び出しで非常にあいまいなエラーが発生しますEquals

メンバー 'object.Equals(object, object)' には、インスタンス参照ではアクセスできません。代わりに型名で修飾してください

が値または参照型であることに制約されていない場合、どのようにインスタンスをチェックできますTか?nullT

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

c# - 複数の参照型フィールドに対する LINQ GroupBy。カスタム EqualityComparer

だから私はこれについてSOや他の場所で約20の例を見てきましたが、私がやろうとしていることをカバーするものは見つかりませんでした. これ -明示的な型コンパレータをインラインで指定できますか? -必要なもののように見えますが、十分ではありません (または、それをさらに進める方法がわかりません)。

  • LoadData のリストがあり、LoadData オブジェクトには参照型と値型の両方のフィールドがあります
  • 参照フィールドと値フィールドの混合物をグループ化し、出力を匿名型に射影する必要がある
  • GroupBy フィールドを比較する方法を指定するためにカスタム IEqualityComparer を提供する必要があります (私は思います)が、それらは匿名型です

    /li>

これまでに行った中で最高の GroupBy クエリ:

これはグループ化されていますが、まだ重複があります。

  1. GroupBy フィールドを比較するカスタム コードを指定するにはどうすればよいですか? たとえば、コンポーネントは Component.Code で比較できます。
0 投票する
3 に答える
295 参照

c# - リストを作成するためにどのインターフェースを実装する必要がありますかまたは辞書2 つの値をキーとして連結する

カスタム オブジェクトをディクショナリ、リストなどで正しく機能させる必要があります。これにより、オブジェクトのプロパティを変更し、再ソートして孤立させないようにすることができます。

前回 GetHashCode() のオーバーライドを試みたとき、オブジェクトをディクショナリに追加したときにオブジェクトを孤立させ、オブジェクトに変更を加えた (GetHashCode が変更された) ため、ディクショナリがメモリからオブジェクトを適切に破棄できませんでした。

質問

誰かが説明できますか:

  • intソートされたディクショナリで連結してTrustedEntity正しく機能させるために、TrustedEntityReference でオーバーライドする必要があるインターフェイスとインターフェイスは何ですか?

  • .NET ディクショナリ オブジェクトで使用されているものに関して変更してはならない値、またはオブジェクトを孤立させるリスクがある値はどれですか? (たとえば、オブジェクトの発行されたハッシュコードを変更すると、辞書で GC の問題が発生する可能性があります)

これは、私が取り組んでいる現在のサンプル オブジェクトです。

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

c# - サブ/スーパークラスを扱うときに Equals(object obj) をオーバーライドする正しい方法は?

次のコードを使用して Equals をテストしています

obj がスーパークラスの場合、どのように処理すればよいですか? 常に false を返す必要がありますか、それとも true になる必要がある場合がありますか?

どうやって比較するの?