Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以使IEnumerable<;char>;实现IComparable?_C#_Ienumerable_Icomparable - Fatal编程技术网

C# 是否可以使IEnumerable<;char>;实现IComparable?

C# 是否可以使IEnumerable<;char>;实现IComparable?,c#,ienumerable,icomparable,C#,Ienumerable,Icomparable,如标题所示 我们都知道,如果我们希望一个类具有可比性并用于排序,即DataGrid,我们将实现IComparable 但是对于我来说,我该怎么做呢 我有一个IEnumerable的集合,我们想要比较每个IEnumerable并进行排序 比如说一个集合列表,其中包含: IEnumerable EnumableA包含:“d”、“e”、“f” IEnumerable EnumableB包含:“d”、“e”、“c” 如果我们将集合列表绑定到数据网格, 当我们按照acs顺序对它们进行排序时,顺序将是Enu

如标题所示

我们都知道,如果我们希望一个类具有可比性并用于排序,即DataGrid,我们将实现IComparable

但是对于我来说,我该怎么做呢

我有一个IEnumerable的集合,我们想要比较每个IEnumerable并进行排序

比如说一个集合
列表
,其中包含:

IEnumerable EnumableA
包含:“d”、“e”、“f”

IEnumerable EnumableB
包含:“d”、“e”、“c”

如果我们将集合
列表
绑定到数据网格,
当我们按照acs顺序对它们进行排序时,顺序将是
EnumableB
1,然后是
EnumableA
2

我确实想到了这样的解决方案,比如将
EnumableA
存储到一个对象中,该对象实现
IComparable
,但这需要创建另一个对象集合,这将非常昂贵


因此,是否可以或无论如何将
IComparable
接口和我的排序实现附加到
iUnuerable
以使其可排序?

您想要做的方法是编写一个新类,该类同时实现
iUnumerable
IComparable

我可能会实现
IList
,并有一个常规的
列表
作为支持列表,使用对支持列表的相同调用实现所有IList,并实现您需要的IComparable

当然,您可以选择另一种方式,使用
字符串
类。它同时实现了
IComparable
IEnumerable
,因此这可能适合您的需要。

请查看以下文章:


使用linq.orderby传入您的IComparable。

许多可以使用
IComparable
的地方也会接受
IComparer
。写一个
IComparer
string
implements
IEnumerable
not
IEnumerable
可能更容易些。我真的不明白如何将它应用到与DataGrid的数据绑定中来进行排序。。。我不是在用Linq编程排序…哦,等等,我错过了你的最后一句话。我认为你是对的。谢谢