标题为。
我们都知道如果我们希望一个类可以比较并用于排序,即DataGrid,我们将实现IComparable。
但对于IEnumerable,我该怎么做?
我有一个IEnumerable的集合,我们希望将每个IEnumerable相互比较并进行排序。
所以说集合List<IEnumerable<char>>
包含:
IEnumerable<char> EnumableA
包含:“d”,“e”,“f”
IEnumerable<char> EnumableB
包含:“d”,“e”,“c”
如果我们将集合List<IEnumerable<char>>
绑定到DataGrid,
当我们按照订单顺序对它们进行排序时,订单将是EnumableB
第一个,然后是EnumableA
第二个。
我确实考虑过将EnumableA
存储到一个对象IComparable
中的解决方案,但是这需要创建另一个对象集合,这将是昂贵的。
那么有可能或者无论如何将IComparable
接口和我的排序方法附加到IEnuerable<char>
,以便它可以排序吗?
答案 0 :(得分:2)
看看这篇文章: Use own IComparer<T> with Linq OrderBy
使用linq.orderby传入IComparable。
答案 1 :(得分:1)
可以使用IComparable
的许多地方也会接受IComparer
。编写IComparer<IEnumerable<char>
可能更容易。
答案 2 :(得分:0)
执行您想要做的事情的方法是编写一个实现IEnumerable<char>
和IComparable
的新类。
我可能会实现IList<char>
,并且有一个常规的List<char>
作为支持列表,通过对支持列表的相同调用实现所有IList,并实现IComparable但是你需要。
当然,您可以采用其他方式,并使用string
类。它实现了IComparable
和IEnumerable<char>
,因此可能适合您的需要。