这是我用来按升序排序Id的代码。
SqlCeDataAdapter da = new SqlCeDataAdapter("select * from Contact_List order by Id ASC", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
它只对数字的第一个数字进行排序
例如我有Id:1,11,2
并且此代码将此列表排序为= 1,11,2
但我希望它对list = 1,2,11
进行排序怎么做?
答案 0 :(得分:0)
不,它没有按第一个数字排序,它的排序好像值是文本而不是数字。文本排序是按字典顺序完成的,因此" 11"来之前" 2"就像" AA"来自" B"。我猜测您的id
列是一个文本值,如VARCHAR
;如果您只在其中存储数字,那么它应该是INT
之类的数值。
与此同时,您应该能够获得正确的行为 - 假设您仅 实际存储数值,通过转换:
select * from Contact_List order by CONVERT(INT, Id) ASC
无论哪种方式,如果您对数据库模式进行任何控制,您应该让它完成其工作并使用正确的数据类型存储值。
答案 1 :(得分:0)
我假设您正在为Id使用varchar字段。将其转换为int,然后在表中对数据类型进行排序或更改。
select CAST(Id AS int) from Contact_List order by CAST(Id AS int) ASC