2

如题。

我们都知道,如果我们想让一个类具有可比性并用于排序,即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第一个,然后EnumableA是第二个。

我确实想到了解决方案,例如将其存储EnumableA到一个 implment 的对象中IComparable,但这将需要创建另一个对象集合,这将是昂贵的。

那么是否有可能或无论如何将一个IComparable接口和我的排序实现附加到它IEnuerable<char>以便它可以排序?

4

3 回答 3

2

查看这篇文章: 使用自己的 IComparer<T> 和 Linq OrderBy

通过传入您的 IComparable 使用 linq.order。

于 2012-04-19T01:17:59.300 回答
1

很多可以用的地方IComparable也会接受IComparer。写一个可能更容易IComparer<IEnumerable<char>

于 2012-04-19T01:18:57.707 回答
0

做你想做的事情的方法是编写一个实现IEnumerable<char>和的新类IComparable

我可能会实现IList<char>,并有一个常规List<char>作为后备列表,通过对后备列表的相同调用来实现所有 IList,并根据需要实现 IComparable。

当然,你可以换一种方式,使用string类。它同时实现IComparableand IEnumerable<char>,因此这可能适合您想要的。

于 2012-04-19T01:09:14.917 回答