2

タイトル通り。

クラスを比較可能にして並べ替えに使用する場合、つまり DataGrid を使用する場合は、IComparable を実装します。

しかし、IEnumerable の場合、どうすればそれを行うことができますか?

私は IEnumerable のコレクションを持っています。各 IEnumerable を互いに比較し、並べ替えを行いたいと考えています。

以下を含むコレクションを考えてみましょうList<IEnumerable<char>>:

IEnumerable<char> EnumableA次を含む: "d"、"e"、"f"

IEnumerable<char> EnumableB次を含む: "d"、"e"、"c"

コレクションList<IEnumerable<char>>を DataGrid にバインドする場合、それらを acs 順に並べ替えると、順序はEnumableB1 番目、次にEnumableA2 番目になります。

EnumableAを実装するオブジェクトに格納するなどの解決策を考えていますIComparableが、これには別のオブジェクトのコレクションを作成する必要があり、コストがかかります。

IComparableそれで、ソート可能になるように、インターフェイスとソートの実装を追加することは可能ですか、とにかくIEnuerable<char>ですか?

4

3 に答える 3

2

この投稿をチェックしてください: Linq OrderBy で独自の IComparer<T> を使用する

IComparable を渡して linq.order を使用します。

于 2012-04-19T01:17:59.300 に答える
1

使えるところも多くIComparable受け入れてくれますIComparer。の方が書きやすいかもしれませんIComparer<IEnumerable<char>

于 2012-04-19T01:18:57.707 に答える
0

やりたいことを行う方法は、 と の両方を実装する新しいクラスを作成することIEnumerable<char>ですIComparable

私はおそらく を実装し、バッキング リストとしてIList<char>レギュラーを持ち、List<char>バッキング リストへの同じ呼び出しですべての IList を実装し、必要に応じて IComparable を実装します。

もちろん、別の方法でstringクラスを使用することもできます。IComparableと の両方を実装してIEnumerable<char>いるため、必要なものに適している場合があります。

于 2012-04-19T01:09:14.917 に答える