就像标题一样。
我们都知道,如果我们想要一个类是可比较的,并用于排序,即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存储到实现IComparable的对象中,但这需要创建另一个对象集合,这将是非常昂贵的。
那么,是否可以或者无论如何都可以在IEnuerable<char>中添加一个IComparable接口和我的排序实现,以便它是可排序的呢?
发布于 2012-04-19 09:17:59
查看这篇文章:Use own IComparer with Linq OrderBy
使用linq.orderby传入您的IComparable。
发布于 2012-04-19 09:18:58
许多可以使用IComparable的地方也会接受IComparer。编写一个IComparer<IEnumerable<char>可能更容易。
发布于 2012-04-19 09:09:15
做你想做的事情的方法是编写一个同时实现IEnumerable<char>和IComparable的新类。
我可能会实现IList<char>,并有一个常规的List<char>作为后备列表,使用对后备列表的相同调用来实现所有的IList,并根据需要实现IComparable。
当然,您也可以采用另一种方式,并使用string类。它同时实现了IComparable和IEnumerable<char>,因此这可能适合您的需要。
https://stackoverflow.com/questions/10220253
复制相似问题