C# DataTable列位置与db的结果集不同

C# DataTable列位置与db的结果集不同,c#,asp.net,sql-server,datatable,C#,Asp.net,Sql Server,Datatable,我在DataTable中获得了我的ResultSet(使用存储过程),但奇怪的是列位置在DataTable中发生了变化,然后从db返回了什么。请看以下图片: 第一个图像是返回的SSMS SQL查询结果,这是正确的。 第二幅图像是代码中的数据表。为什么最后两列会改变位置: 最后两列是使用pivot/unpivot生成的。请看这把小提琴以了解更多信息 关于,您是否在加载数据表之前设置了数据表 Dim table As New Data.DataTable("MyTable") table.Co

我在
DataTable
中获得了我的
ResultSet
(使用
存储过程
),但奇怪的是
位置在
DataTable
中发生了变化,然后从
db
返回了什么。请看以下图片: 第一个图像是返回的
SSMS SQL查询结果
,这是正确的。

第二幅图像是代码中的数据表。为什么最后两列会改变位置:

最后两列是使用
pivot/unpivot
生成的。请看这把小提琴以了解更多信息


关于,

您是否在加载数据表之前设置了数据表

Dim table As New Data.DataTable("MyTable")

table.Columns.Add("DataName")
table.Columns.Add("33^Bamako_T")
table.Columns.Add("33^Bamako_A")

adapter.Fill( table )

很可能您的数据网格是按字母顺序列出列名的,而SSMS不是。但列的位置在尚未绑定到网格的DataTable中发生了更改。无论是否绑定,我的第一个猜测是,无论您在其中查看列,都可能是按字母顺序对列进行排序。如果您将它绑定到实际的数据网格,它是否仍按该顺序显示?是的,它仍按错误的顺序显示,即它在DataTable中的顺序。奇怪-您是否可以尝试重新发布SQL FIDLE,它现在似乎是另一个查询。@ThinkinStiff,不是我,它就像DataTable dt=GetDataFromDB();但我用脚本在另一个服务器上创建了db进行测试,它出现了这个问题,但为了测试它,我备份了我的db并在测试服务器上恢复了它,现在它开始正常工作。