我有一个SQL数据库,列名为"No",数据类型为varchar(50(,值为1.1、1.2、1.12、1.13、1.21……,我在网格视图中显示数据,排序顺序为"ASC"。现在的问题是我想像一样对数据进行排序
1.1,1.2,1.12,1.13中,1.21,…
但是我得到的结果是
1.1,1.12,1.13中,1.2,1.21,…
这是我的代码
using (SqlConnection cnn = new SqlConnection(cnnString))
{
using (SqlCommand cmd = new SqlCommand(command, cnn))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = cnn;
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);
DataView dv = dt.DefaultView;
dv.Sort = "No ASC";
GridView4.DataSource = dv;
GridView4.DataBind();
}
}
}
}
- 尝试将每个数字转换为字符串,然后用'.'->将其拆分var结果=数字。拆分('.'(
- 以Convert.ToInt32(result[1](为例,因此对于数字1.12,您将只取12并将其放入某个新数组中
对于您的示例1.1、1.2、1.12、1.13、1.21,您将拥有具有1,2,12,13,21的新阵列。
-
对该数组进行排序,然后在其每个成员上添加前缀"1">
-
在该部分之后,您将获得类似于{1.1,1.2,1.12,1.13,1.21,…}的数组
这是我的逻辑,数字以1开头,但如果你的数字以其他数字开头,你可以对每个数字执行相同的逻辑,在每个获得和排序的数组之后,插入一个特殊的数组:示例:{1.1,1.2,1.12,…}{2.1,2.2,2.12,…}->{1.1,1.21,1.12,…,2.11,2.2,2.12..}
我希望我的逻辑能帮助你,也希望你能解决这个问题。