問題タブ [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.
c# - SortedDictionary にカスタム IComparer を使用するには?
SortedDictionary<> にカスタム IComparer を使用するのが困難です。目標は、メール アドレスを特定の形式 (firstnam.lastname@domain.com) でキーとして配置し、姓で並べ替えることです。私がこのようなことをすると:
An entry with the same key already exists.2 番目の項目を追加すると、 この ArgumentException:
が発生します。
以前に SortedDictionary のカスタム IComparer を使用したことがなく、エラーが表示されません。何が間違っていますか?
linq - 多くのプロパティと一意の値を持たないクラスの IEqualityComparer
IEqualityComparerこのクラスの実装方法は?
ID プロパティは一意ではありません。どちらのプロパティにも一意の値はありません。
エンティティには 7 つのプロパティがあります。
linq - IComparer、IEqualityComparer、または単一メソッド インターフェイスの代わりにラムダ式を渡しますか?
この男が IComparer または IEqualityComparer が期待される ArrayList.Sort(IComparer here) または IEnumerable.SequenceEqual(IEnumerable list, IEqualityComparer here) にラムダ式を渡したコードを見たことがあります。
見たのか、ただ夢を見ているだけなのかは定かではありません。そして、これらのコレクションのいずれにも、メソッド シグネチャで Func<> またはデリゲートを受け入れる拡張機能が見つからないようです。
そのようなオーバーロード/拡張メソッドはありますか? または、そうでない場合、このようにいじくり回して、単一メソッド インターフェイスが期待されるアルゴリズム (読み取りデリゲート) を渡すことは可能ですか?
更新 ありがとう、みんな。私もそう思っていました。夢見ていたに違いない。変換の書き方を知っています。私はそのようなものを見たことがあったのか、それとも単に見たと思っただけなのか確信が持てなかった.
さらに別の更新 ほら、ここで、そのようなインスタンスを1つ見つけました。やっぱり夢じゃなかった。この男がここで何をしているのか見てください。何を与える?
そして、ここに別の更新
があります。わかりました。男はComparison<T>過負荷を使用しています。良い。素晴らしいですが、完全に誤解を招く傾向があります。いいけど。ありがとう。
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 実装を使用しているだけだと思いますが、間違っていますか?
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を返すように実装するのが標準ですか?
これが私が求めているもののコードです:
c# - LINQ オーダーバイと IComparer
何が使いやすいか知りたいです。
リストの並べ替えまたは LINQ orderby の IComparer クラスと Compare メソッド。どちらも問題なく動作しますが、大規模なリストにはどちらが適していますか。
c# - IComparer.Compareメソッドで「オブジェクト」をクラスタイプにキャストする方法
私は実装しています
int IComparer.Compare(object x, object y);
IComparerインターフェースから。オブジェクトのタイプがClass1であり、そのメンバーの1つがタイプDateTimeのclass1Instance.myDateであることを知っています。
私がやりたいのは、次のようなことです。
しかし、この方法でキャストすることはできません。以下に代わるものはありますか?
.net - 比較のために2つのインターフェイス(Icomparable、Icomparer)があるのは何ですか?
一方、IComparer は両方のケースで機能します。
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.ArraySortHelper1.QuickSort(T[] keys, Int32 left, Int32 right, IComparer1 comparer)at System.Collections.Generic.GenericArraySortHelper1.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)---内部例外スタックトレースの終了---
c# - 複数のオブジェクト値を互いに比較する方法は?
次の値を持つオブジェクトがあると仮定します (また、これには datetime オブジェクトを使用したくないことに注意してください。以下の値だけを使用し、比較子自体でこれを解決したいと考えています):
Comparer のこれらの複数の値をすべて比較して、日付に従ってリストされるようにするにはどうすればよいですか?
次に、Comparer.cs クラスを作成します。
}