如何在datagridview中按升序对Id进行排序

时间:2016-05-02 19:29:15

标签: c#

这是我用来按升序排序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

进行排序

怎么做?

2 个答案:

答案 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