protected void Page_Load(object sender, EventArgs e)
{
DataTabledt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Age");//因为是字符串,所以排序不对
dt.Rows.Add("小明", "21");
dt.Rows.Add("小张", "10");
dt.Rows.Add("小红", "9");
dt.Rows.Add("小伟", "7");
dt.Rows.Add("小美", "3");
dt.DefaultView.Sort= "Age ASC";
dt= dt.DefaultView.ToTable();
#region Create DataSet
DataSet dInfo = new DataSet();
DataTable dTable = new DataTable();
dTable.Columns.Add("ORG", typeof(string));
<span style="color:#FF0000;"> //dTable.Columns.Add("LINE_NUM", typeof(string));
dTable.Columns.Add("LINE_NUM", typeof(int));</span>
dTable.Columns.Add("REEL_ITEM_NO", typeof(string));
dTable.Columns.Add("ROHAS_FREE", typeof(string));
dTable.Columns.Add("NEED_RCV_QTY", typeof(string));
dTable.Columns.Add("ERP_RCV_QTY", typeof(string));
dTable.Columns.Add("INSPECTION_TYPE", typeof(string));
dTable.Columns.Add("IQA", typeof(string));
dTable.Columns.Add("MES_RECEIVEDQTY", typeof(string));
dTable.Columns.Add("MES_STORAGEQTY", typeof(string));
dTable.Columns.Add("NO_CHECK_QTY", typeof(string));
dTable.Columns.Add("NO_STORAGE_QTY", typeof(string));
dTable.Columns.Add("VENDOR_ID", typeof(string));
#endregion
foreach(DataRow s in dt.Rows)
{
Response.Write(s["Age"].ToString()+ "--" + s["Name"].ToString() + "<br/>");
}
Response.Write("------------------1----------------<br/>");
#region方法1:将年龄补齐为2位,然后再进行排序,但是实际不应该有0(仅作参考)
for(int i = 0; i < dt.Rows.Count; i++)
{
dt.Rows[i]["Age"]= dt.Rows[i]["Age"].ToString().PadLeft(2, '0');
}
dt.DefaultView.Sort= "Age ASC";
dt= dt.DefaultView.ToTable();
foreach(DataRow s in dt.Rows)
{
Response.Write(s["Age"].ToString()+ "--" + s["Name"].ToString() + "<br/>");
}
#endregion
Response.Write("------------------2----------------<br/>");
#region方法2:创建新的DataTable,将Age类型变更为int类型
DataTabledtNew = dt.Clone();
dtNew.Columns["Age"].DataType= typeof(int);//指定Age为Int类型
foreach(DataRow s in dt.Rows)
{
dtNew.ImportRow(s);//导入旧数据
}
dtNew.DefaultView.Sort= "Age ASC";
dtNew= dtNew.DefaultView.ToTable();
foreach(DataRow s in dtNew.Rows)
{
Response.Write(s["Age"].ToString()+ "--" + s["Name"].ToString() + "<br/>");
}
#endregion
Response.Write("-----------------3-----------------<br/>");
#region方法3:添加一列,主要用于排序
dt.Columns.Add("AgeLength",typeof(int), "len(Age)");//添加该列时,DataTable列数据即生成
dt.DefaultView.Sort= "AgeLength,Age ASC";
dt= dt.DefaultView.ToTable();
foreach(DataRow s in dt.Rows)
{
Response.Write(s["Age"].ToString()+ "--" + s["Name"].ToString() + "<br/>");
}
#endregion
Response.Write("-----------------4-----------------<br/>");
#region方法4:运用LinQ,将DataTable转换为集合,再调用集合自带的排序方法进行排序
foreach(DataRow s in dt.Rows.Cast<DataRow>().OrderBy(r =>int.Parse(r["Age"].ToString())))
{
Response.Write(s["Age"].ToString()+ "--" + s["Name"].ToString() + "<br/>");
}
#endregion
}
DataTable字符串类型的数字,按照数字类型排序
最新推荐文章于 2021-05-19 11:40:19 发布