DataTable列按ASCII顺序排序,而不是

时间:2009-04-20 17:07:10

标签: c# datatable sorting ascii

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

但是,我确实认识到,这不能满足GridView完成的自动排序等问题,并且不能解释在计算排序位置后发生的数据更改。不幸的是,我认为没有什么可以真正帮助解决这个问题。

如果您希望直观地对其进行排序,请检查并确定您的可视控件是否支持自定义排序机制。这就是我所能提出的所有建议。

答案 1 :(得分:0)

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

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