2012-04-19 79 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>可能会更容易。

相关问题