已经取出的数据集要在后台进行排序,
以前总是用DataView.Sort()
感觉很是不爽
今天在vs2008下尝试用linq来排序,虽然代码不是很乐观,但感觉还是要爽一些
代码如下:
//主要是这句
var s1 = (from r in dt.AsEnumerable() orderby r.Field<decimal>("达标率") descending select
r).Take(num).ToArray();
//将排序的结果转换为数组
Array list = s1.ToArray();
List<Index_ShowField> objindex = new List<Index_ShowField>();
for (int k = 0; k < list.Length; k++)
{
//格式化成固定的DataRow并插入到类中
objindex.Add(new Index_ShowField(((DataRow)(((System.Data.DataRow[])s1)[k]))[0].ToString(), ((DataRow)(((System.Data.DataRow[])s1)[k]))[3].ToString()));
}
DataTable dtNew = new DataTable();
dtNew.Columns.Add("代码名称");
dtNew.Columns.Add("达标率");
//根据创建好的类来构建需要的DataTable
foreach (Index_ShowField objfield in objindex)
{
DataRow dr = dtNew.NewRow();
dr[0] = objfield.Name;
dr[1] = objfield.Per;
dtNew.Rows.Add(dr);
}
return dtNew;