問題タブ [icomparer]

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 に答える
19011 参照

c# - SortedDictionary にカスタム IComparer を使用するには?

SortedDictionary<> にカスタム IComparer を使用するのが困難です。目標は、メール アドレスを特定の形式 (firstnam.lastname@domain.com) でキーとして配置し、姓で並べ替えることです。私がこのようなことをすると:

An entry with the same key already exists.2 番目の項目を追加すると、 この ArgumentException: が発生します。

以前に SortedDictionary のカスタム IComparer を使用したことがなく、エラーが表示されません。何が間違っていますか?

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

linq - 多くのプロパティと一意の値を持たないクラスの IEqualityComparer

IEqualityComparerこのクラスの実装方法は?

ID プロパティは一意ではありません。どちらのプロパティにも一意の値はありません。

エンティティには 7 つのプロパティがあります。

0 投票する
8 に答える
59778 参照

linq - IComparer、IEqualityComparer、または単一メソッド インターフェイスの代わりにラムダ式を渡しますか?

この男が IComparer または IEqualityComparer が期待される ArrayList.Sort(IComparer here) または IEnumerable.SequenceEqual(IEnumerable list, IEqualityComparer here) にラムダ式を渡したコードを見たことがあります。

見たのか、ただ夢を見ているだけなのかは定かではありません。そして、これらのコレクションのいずれにも、メソッド シグネチャで Func<> またはデリゲートを受け入れる拡張機能が見つからないようです。

そのようなオーバーロード/拡張メソッドはありますか? または、そうでない場合、このようにいじくり回して、単一メソッド インターフェイスが期待されるアルゴリズム (読み取りデリゲート) を渡すことは可能ですか?

更新 ありがとう、みんな。私もそう思っていました。夢見ていたに違いない。変換の書き方を知っています。私はそのようなものを見たことがあったのか、それとも単に見たと思っただけなのか確信が持てなかった.

さらに別の更新 ほら、ここで、そのようなインスタンスを1つ見つけました。やっぱり夢じゃなかった。この男がここで何をしているのか見てください。何を与える?

そして、ここに別の更新 があります。わかりました。男はComparison<T>過負荷を使用しています。良い。素晴らしいですが、完全に誤解を招く傾向があります。いいけど。ありがとう。

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

c# - IComparable と OrderBy。C# でポーカーの手を並べ替えようとしている

ポーカーの手を分析する簡単なプログラムを作成しようとしています。n 人のハンド/プレイヤーとコミュニティ カード (テキサス ホールデム) が与えられた場合、勝者を決定したいと思います。ただし、正確な結果が 2 つある場合、テストは失敗します。勝者は 1 つしか返されません。つまり、ハンドの結果には両方のプレーヤーの JJ 9 9 K が含まれていますが、私の勝者リストには 1 つが含まれています。

ここに投稿する理由はいくつかあります。明らかに、最初の存在は、ここで明らかに間違っていることはありますか? これはソートを実装するための良いアプローチですか (ソートを分離する理由がわかりませんでした)、より良いアプローチがあり、その理由は?

プレイヤーの HandResult で注文を実行する DecisionWinners メソッドがあります。

これが私のハンド結果クラスです:

GetCardResult メソッドは、単純にカードの整数表現、つまり 1 ~ 14 を返します。HandRanking 列挙型は次のとおりです。

これは、HandRanking 列挙型の GetGrouping 拡張機能です。値を比較するときにカードを反復処理するために使用されます。

よろしくお願いいたします。

編集: CompareTo_Equal、CompareTo_LessThan、CompareTo_GreaterThan (演算子のオーバーロードを使用) のテストは、それぞれ 0、-1、1 の結果で成功します。Linq.OrderByDescending の実装に問題があると思われるようになりました。これは CompareTo 実装を使用しているだけだと思いますが、間違っていますか?

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

c# - C#IComparer標準的な使用法の質問

これがC#でIComparerを使用するための標準であるかどうかについて質問があります。P1、P2、およびP3の3つのPersonオブジェクトがある状況があるとします。P1とP2を渡すCompareメソッドを呼び出し、結果が0であるとします。これは、基本的に2人が等しいものとして分類される必要があることを意味します。ここで、P2とP3を渡すCompareメソッドを呼び出し、その結果も0であるとします。繰り返しますが、これは2人が平等であることを意味します。論理的に言えば、P1とP3も等しいと仮定できます。ただし、Compareメソッドは実装できますが、誰かがそれを実装することにしました。では、この場合、P1とP3も0を返すように実装するのが標準ですか?

これが私が求めているもののコードです:

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

c# - LINQ オーダーバイと IComparer

何が使いやすいか知りたいです。

リストの並べ替えまたは LINQ orderby の IComparer クラスと Compare メソッド。どちらも問題なく動作しますが、大規模なリストにはどちらが適していますか。

0 投票する
9 に答える
2081 参照

c# - IComparer.Compareメソッドで「オブジェクト」をクラスタイプにキャストする方法

私は実装しています

int IComparer.Compare(object x, object y);

IComparerインターフェースから。オブジェクトのタイプがClass1であり、そのメンバーの1つがタイプDateTimeのclass1Instance.myDateであることを知っています。

私がやりたいのは、次のようなことです。

しかし、この方法でキャストすることはできません。以下に代わるものはありますか?

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

.net - 比較のために2つのインターフェイス(Icomparable、Icomparer)があるのは何ですか?

重複の可能性:
IComparable<T> Vs を使用する場合。IComparer<T>

一方、IComparer は両方のケースで機能します。

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

asp.net - Icomparerの実装でエラーが発生しました。助けてください !

DNNモジュールのWinExplorerのように、配列を並べ替える配列ソーターを作成しました。プレビューの質問への回答のように:

Windowsエクスプローラーのようなフォルダー名の配列の並べ替え(数値およびアルファベット順)-VB.NET

ユーザーがモジュールを実行するたびに次のエラー(以下)が発生します。私は特に経験豊富なASP.NET開発者ではありません。IComparerでStrCmpLogicalWを使用し、StrCmpLogicalWをサポートしていないプラットフォームで使用しているため、このエラーが発生しましたか?または、権限の問題が原因で発生しますか。

どんな助けでも大いに感謝されます、

どうもありがとうございました。

エラーの原因となるソーターは次のとおりです。

そしてこれは例外スタックトレースです:

InnerException:配列内の2つの要素の比較に失敗しました。

メッセージ:DotNetNuke.Services.Exceptions.PageLoadException:配列内の2つの要素を比較できませんでした。--- |> System.InvalidOperationException:配列内の2つの要素の比較に失敗しました。--- |> System.Security.SecurityException:System.Collections.Generic.ArraySortHelper 1.SwapIfGreaterWithItems(T[] keys, IComparer1コンパレータのNukeville.Modules.SkinLab.View.nvSorter.Compare(String x、String y)のSystem.Security.Permissions.SecurityPermission、Int32 a 、Int32 b)at System.Collections.Generic.ArraySortHelper 1.QuickSort(T[] keys, Int32 left, Int32 right, IComparer1 comparer)at System.Collections.Generic.GenericArraySortHelper 1.Sort(T[] keys, Int32 index, Int32 length, IComparer1 comparer)失敗した最初のアクセス許可のタイプは次のとおりです。System.Security.Permissions.SecurityPermission失敗したアセンブリのゾーンだった:MyComputer---内部例外スタックトレースの終わり---System.Collections.Generic.GenericArraySortHelperで1.Sort(T[] keys, Int32 index, Int32 length, IComparerSystem.Array.Sort [T](T []配列、Int32インデックス、Int32長、IComparerで1つの比較子)1 comparer) at System.Array.Sort[T](T[] array, IComparerNukeville.Modules.SkinLab.View.Page_PreRender(Object s、 EventArgs e)at System.Web.UI.Control.OnPreRender(EventArgs e)at System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal()atSystem.Web.UI.Control。 System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal( )System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal()at System.Web.UI.Control.PreRenderRecursiveInternal()atSystem.Web.UI.Page。ProcessRequestMain(ブール値includeStagesBeforeAsyncPoint、ブール値includeStagesAfterAsyncPoint)---内部例外スタックトレースの終了---

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

c# - 複数のオブジェクト値を互いに比較する方法は?

次の値を持つオブジェクトがあると仮定します (また、これには datetime オブジェクトを使用したくないことに注意してください。以下の値だけを使用し、比較子自体でこれを解決したいと考えています):

Comparer のこれらの複数の値をすべて比較して、日付に従ってリストされるようにするにはどうすればよいですか?

次に、Comparer.cs クラスを作成します。

}