2

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

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

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

4

2 回答 2

1

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

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

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

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

于 2009-04-20T17:35:01.977 回答
0

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

SELECT *, CAST(your_column AS int) AS your_column_int
FROM your_table
ORDER BY your_column_int
于 2011-01-13T21:20:34.400 回答