Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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# 数据表列按ASCII顺序排序,而不是_C#_Datatable_Sorting_Ascii - Fatal编程技术网

C# 数据表列按ASCII顺序排序,而不是

C# 数据表列按ASCII顺序排序,而不是,c#,datatable,sorting,ascii,C#,Datatable,Sorting,Ascii,如果我有两个字符串,并且我需要以ASCII顺序(而不是不变的区域性顺序)比较它们,我通常可以使用: int c = String.Compare(a, b, StringComparison.Ordinal); 如果我有一个DataTable,并且我想使用DataView的顺序字符串比较对其中一列进行排序,我该怎么做?不幸的是,DataView中没有内置的工具来促进自定义排序逻辑;这是我的主要抱怨之一,也是我们决定在我以前的工作中推出自己的数据访问层的原因之一 虽然我不知道这对您来说有多可行,

如果我有两个字符串,并且我需要以ASCII顺序(而不是不变的区域性顺序)比较它们,我通常可以使用:

int c = String.Compare(a, b, StringComparison.Ordinal);

如果我有一个DataTable,并且我想使用DataView的顺序字符串比较对其中一列进行排序,我该怎么做?

不幸的是,
DataView中没有内置的工具来促进自定义排序逻辑;这是我的主要抱怨之一,也是我们决定在我以前的工作中推出自己的数据访问层的原因之一

虽然我不知道这对您来说有多可行,但要真正做到这一点,您需要将另一列作为int添加到表中,然后根据自己的比较逻辑对数组中的行进行排序,然后将索引存储在
int
列中的数组中。然后,而不是按
字符串
列排序,而是按
int
列排序

但是,我确实认识到,这并不能满足由
GridView
完成的自动排序之类的要求,也不能考虑在计算排序位置后对数据所做的更改。不幸的是,我不认为有什么能真正帮助到这一点


如果希望以可视化方式对此进行排序,请检查可视化控件是否支持自定义排序机制。这就是我的全部建议。

如果可能,当您使用查询创建
数据表时,请让查询将该列转换为数字列:

SELECT *, CAST(your_column AS int) AS your_column_int
FROM your_table
ORDER BY your_column_int