2012-04-19 90 views
2

標題爲。是否有可能使IEnumerable <char>實現IComparable?

我們都知道,如果我們想要一個類可以比較和用於排序即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順序對它們進行排序時,訂單將爲EnumableB 1st,然後是EnumableA 2nd。

我確實想到了解決方案,如將EnumableA存儲到暗含IComparable的對象中,但這需要創建另一個對象集合,這將會很昂貴。

那麼是否有可能或無論如何ADDEND IComparable接口和我的排序implmentation IEnuerable<char>所以它可以排序?

回答

2

退房這個帖子: Use own IComparer<T> with Linq OrderBy

使用linq.orderby傳遞您的IComparable的。

+0

我真的不明白我該如何將它應用到DataGrid的數據綁定中來進行排序......我沒有用Linq編程地對它進行排序...... – 2012-04-19 12:52:12

+0

哦,等等,我錯過了你最後的發言。我想你是對的。謝謝。 – 2012-04-19 18:14:09

0

做你想做的事情的方法是寫一個實現IEnumerable<char>IComparable的新類。

我可能會實現IList<char>,並有一個常規的List<char>作爲後備列表,實現所有的IList與支持列表相同的調用,並實現IComparable,但是你需要。

當然,你可以換個方式,並使用string類。它實現了IComparableIEnumerable<char>,所以這可能適合你想要的。

+1

'string' implements'IEnumerable 'not'IEnumerable ' – 2012-04-19 01:13:17

+0

哎呀,感謝您的糾正。 – 2012-04-19 02:02:24

1

IComparable可以使用的許多地方也將接受IComparer。編寫一個IComparer<IEnumerable<char>可能會更容易。

相關問題