我有一个简单的SELECT请求:
SELECT id, name FROM myTable ORDER BY id
当我在Oracle中执行它时,我首先得到它的排序字母。
ID NAME
A ValueA
B ValueB
C ValueC
1 Value1
2 Value2
3 Value3
当我在VB项目中执行它时,即使使用ORDER BY,数据读取器也会根据我的CultureInfo对它进行排序
Dim dictio As New Dictionary(Of String, String)
strQuery = "SELECT id, name FROM myTable ORDER BY id"
rs = New OracleCommand(strQuery, myConnection).ExecuteReader()
Do While (rs.Read())
dictio.Add(rs.Item(0), rs.Item(1))
Loop
我在字典中按这样的顺序获取数据:
ID NAME
1 Value1
2 Value2
3 Value3
A ValueA
B ValueB
C ValueC
我想这个问题来自.NET本身,将数据放入列表中并使用我的CultureInfo对其进行排序。
您知道如何摆脱它,并告诉它使用原始数据吗?
无论您查询的实际技术如何,以及为什么数据以不同的顺序输出,具体取决于您执行查询的路线,对数据进行排序通常是前端/可视化策略而非数据库的职责范围
以不带ORDER BY的顺序将数据以任何顺序从数据库中拉出,然后将其在VB中按想要向用户显示的顺序进行排序:
Dim dictio As New SortedDictionary(Of String, String)
^^^^^^
sort by key
strQuery = "SELECT id, name FROM myTable"
rs = New OracleCommand(strQuery, myConnection).ExecuteReader()
Do While (rs.Read())
Dim id as String = rs.Item(0).ToString()
id = Char.IsDigit(id(0)).ToString()(0) + id
dictio.Add(, rs.Item(1))
Loop