問題タブ [icomparable]

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

.net - IComparable のようなもので DataView を自然にソートする方法

私の DataView はおかしな動作をしており、アルファベット順に並べ替えているため、数値的に並べ替える必要があります。私はこれについてウェブ全体を見渡し、ICompare で並べ替える方法について多くのアイデアを見つけましたが、実際には何もしっかりしていません。

だから私の質問は

  1. ICompare を DataView に実装するにはどうすればよいですか (ここでコードを探しています)。
  2. 実際の文字列である文字列でいっぱいの列と数字でいっぱいの列 (コンマ付き) から正しく解読する方法。

この 1 人で私を助けるコードが必要です。私は多かれ少なかれ ICompare のアイデアと、さまざまなシナリオで実装する方法について迷っているので、全体的に良い説明があれば素晴らしいでしょう。

また、リンクを渡さないでください。私はこれに関する確かな答えを探しています。

私が使用するいくつかのコード。


このシナリオでは、データテーブルを動的に構築し、それをデータビューに押し込みます。そこで、データビューをグリッドビューに配置すると同時に、データビューをソート機能用のセッション オブジェクトに配置することも忘れないでください。

ユーザーがグリッドビューを呼び出して列を並べ替えると、セッション オブジェクトでデータビューを呼び出し、データビューの並べ替え式を次のように作成します。

または、それらの線に沿った何か。したがって、通常出てくるものは、次のようなすべての実際の文字列に適しています

車; 家; スコット; ザックなど…

しかし、コンマ区切りの値を持つ数値フィールドに対して同じことを行うと、次のような結果になります

900; 800; 700; 600; 200; 120; 1,200; 12,340; 1,000,000;

私が何を意味するか分かりますか?ナチュラルソートではなく、アルファソートとしてアイテムをソートするだけです。Dataview を自然に数値列を次のように正しく並べ替えたい

120; 200; 600; 700; 800; 900; 1,200; 12,340; 1,000,000;

私を助けるためにあなたができることを教えてください。
PSこれを行う方法について数え切れないほどの記事を調べましたが、それらのすべてがリスト/配列に押し込んでそのように行うと言っていますが、もっと効率的な方法はありますか?

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

.net - DataViewを自然に/数値的に並べ替える方法は?

DataViewを自然に並べ替える方法を考えています...これについては本当に助けが必要です。IComparableでリストを作成できる記事を見つけましたが、データビューで数値を並べ替える必要があります。

それらは「コンマ」が含まれる数値であるため、現在アルファソートされています。私を助けてください。

時間をかけて自分で作るのではなく、何かを見つけたいと思っています。

PS式とsortdirectionは機能しますが、もちろんAlphaソートです。助けてください。

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

c# - C# ボクシングの質問

まず、2 つの例:

さて、2番目が機能しない理由についての私の推測は、ボクシングが原因です。このコードの背後にある目的は、実装することIComparableです。エラーをスローするよりも、必要に応じてオブジェクトを long または ulong に強制する方法が必要です。基本的な数値型 (byte、int、long、ubyte など) ごとにチェックを実装する必要はありません。最大の数値型でそれらをキャッチし、そのように処理するだけです。ここにいるすべての賢い人々からの考えは?できればリフレクションを避けて、オブジェクトのボックス化を解除するにはどうすればよいIComparableですか?

編集:

これは機能しているように見えますが、問題を回避するための恐ろしいハックのようです。私だけでしょうか?

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

.net - double 配列を IComparable 配列に変換する

IComparable 要素の配列を取得して、VB.NET を使用して Quicksort 基本クラスを作成しようとしています。署名は次のようになります。

ただし、double の配列を渡すと、コンパイラでエラーが発生します。

エラーは次のとおりです。

.NET のドキュメントには、double が IComparable を実装すると記載されています。.NET コンパイラでこれができないのはなぜですか?

0 投票する
6 に答える
29562 参照

c# - IComparable インターフェイスを使用するにはどうすればよいですか?

IComparable昇順または降順で並べ替え、並べ替えているオブジェクト タイプのさまざまなフィールドで並べ替えることができるように、インターフェイスを使用する方法の基本的な例が必要です。

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

fxcop - FxCop と IComparable/IComparable

私は現在、既存のプロジェクトの 1 つで FxCop の使用を調査しており、奇妙な結果を得ています。

出力には、「IComparable を実装しているため、'Log' は Equals をオーバーライドする必要があります」という「比較可能な型のメソッドをオーバーライドする」ルールの少数の違反が表示されます。

これには 2 つの問題があります。

  1. CompareTo実装するときだけ実装すればいいと思っていたIComparable(MSDN自身も確認済み)
  2. このクラスは実装していませんIComparableIComparable<T>、CompareTo を強く型付けしたものとして実装しています。

それで、それはFxCop(1.36)がぐらつきを投げているのですか、それとも私の理解がここでうまくいかないのですか..?

前もって感謝します。

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

f# - F#カスタムクラスを使用して設定

自分が持っているクラスでSet操作を使用しようとしています。このクラスのすべてのインスタンスには一意のIDがあります。System.IComparableインターフェイスを実装する必要がありますか?実装する場合はどうすればよいですか?

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

c# - IComparable のインターフェイス制約

タイプ T を比較できるように制約したい場合は、次を使用する必要があります。

また

#2が理にかなっている場合、私は頭を悩ませることができません。誰が違いを説明できますか?

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

asp.net - CompareTo() を使用して複数の列に基づいて並べ替える

現在、IComparable インターフェイス (ASP.NET 3.5、VB) を実装するオブジェクトがあります。いくつかのインスタンス化されたオブジェクトを Generics リストに配置するときは、単純なsomeList.Sort. 私のCompareTo()機能はこれです:

これは正常に機能しますが、Point のサブセットとして DateSubmitted プロパティという別のプロパティで並べ替える必要がある場合を除きます。たとえば、3 つのセンテンスに投票がある場合: 3、1、1 の場合、(明らかに) 最も投票数の多いセンテンスを最初に表示し、1 票の 2 つのセンテンスのうち、最初に送信されたセンテンスをリストに表示します。

これは CompareTo() で可能ですか、それともデータベースに再度アクセスしてソートする必要がありますか?

ありがとう

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

c# - IComparableとIComparableを混合/修正する方法混乱

基本的に2つのオブジェクトでCompareToを呼び出すヘルパー関数がありますが、特別なコーナーケースのチェック、変換などを行います。

もともと私はそのように関数を書きました:

しかし、問題は、私が持っている場合ですclass AwesomeClass : IComparable<AwesomeClass>。実際、いくつかの古いIComparableクラスがなくなったので、私はいくつか持っていIComparable<T>ます。しかし、コンパイラはこれらの新しいオブジェクトをに変換できないため、怒りますIComparable。これが悪化するかどうかはわかりませんが、そのうちのいくつかは悪化していますabstract(抽象クラ​​スは実装を提供しますが)。

「CompareToを呼び出すことができる2つのオブジェクトが必要」を伝え、コンパイラにリップを与えないようにするにはどうすればよいですか。できれば、新しい関数はのようBetterCompare<AwesomeClass>(this, that, out retCode);に見えるのではなく、単に「正しいことをする」必要があります。または、すべてのクラスに触れずにこれを行うためのより良い方法はあります IComparableIComparable<T>