是否可以使IEnumerable <char>实现IComparable?</char>

时间:2012-04-19 01:01:46

标签: c# ienumerable 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, 当我们按照订单顺序对它们进行排序时,订单将是EnumableB第一个,然后是EnumableA第二个。

我确实考虑过将EnumableA存储到一个对象IComparable中的解决方案,但是这需要创建另一个对象集合,这将是昂贵的。

那么有可能或者无论如何将IComparable接口和我的排序方法附加到IEnuerable<char>,以便它可以排序吗?

3 个答案:

答案 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类。它实现了IComparableIEnumerable<char>,因此可能适合您的需要。