2012-04-19 13 views
2

タイトルが付いています。IEnumerable <char>にIComparableを実装させることは可能ですか?

クラスを比較可能にし、並べ替えにDataGridを使用するかどうかはわかりますが、IComparableを実装します。

しかし、IEnumerableではどうすればいいですか?

私はIEnumerableのコレクションを持っているので、各IEnumerableを互いに比較し、並べ替えを行いたいと思います。含まれている "D"、 "E"、 "F"

IEnumerable<char> EnumableBを: "D"、 "E"、 "C"

IEnumerable<char> EnumableAが含まれています

だから含むコレクションList<IEnumerable<char>>が言います

コレクションList<IEnumerable<char>>をデータグリッドにバインドする場合、 をacsの順に並べ替えると、順序はEnumableB 1番目、次にEnumableA 2番目になります。

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

IComparableインターフェイスと私の並べ替えの実装をIEnuerable<char>に追加することができますか、それでは、並べ替えることができますか?

答えて

2

チェックアウトこの記事:あなたIComparableを渡すlinq.orderby Use own IComparer<T> with Linq OrderBy

使用。

+0

ソートを行うためにDataGridでデータバインディングにどのように適用できるのか分かりません...プログラムでLinqとソートしていません... –

+0

ああ待って、私はあなたの最後のセンチメンタルを逃しました。私はあなたが正しいと思います。ありがとう。 –

0

あなたがしたいことをする方法は、IEnumerable<char>IComparableの両方を実装する新しいクラスを作成することです。

おそらくIList<char>を実装し、バッキングリストとして通常のList<char>を使用し、バッキングリストと同じ呼び出しでIListをすべて実装し、IComparableを実装する必要があります。

もちろん、逆の場合はstringクラスを使用します。 IComparableIEnumerable<char>の両方を実装していますので、必要なものに適しています。

+1

'string'は' IEnumerable '' IEnumerable 'を実装していません。 –

+0

訂正していただきありがとうございます。 –

1

IComparableが使用できる場所の多くはIComparerも受け入れます。 IComparer<IEnumerable<char>と書く方が簡単です。

関連する問題