DataTable 排序 查询


以前在2003中如果想对DataTable中的原始记录进行排序,好像只能用Select方法。如果用DataView.Sort的话,原始的DataTable并不发生排序,所以只用于显示的话还可以。这个问题困扰了我很长时间。使用2005有一年时间了,对于此问题,一直也是使用Select方法解决,在公司别人问我时,我还说没有什么好方法。
    今天仔细看了一下.Net 2005的DataView类,发现除了Table属性外,还多了一个ToTable方法,当时就感觉好像是解决这个问题的,写了一小段方法试了一下,果然如此。代码如下:
            DataTable dt = new DataTable();

            dt.Columns.Add("A");

            for (int i = 5; i >= 0; i--)
            {
                DataRow dr = dt.NewRow();
                dr["A"] = i;
                dt.Rows.Add(dr);
            }

            //DataView dv = new DataView(dt);
            dt.DefaultView.Sort = "A ASC";
            dt = dt.DefaultView.ToTable();

    这一年写的代码都还是用Select先筛选,在重新放回DataTable中。实在太不智慧了,还告诉别人没有好方法,真是惭愧。看来以后什么问题都要仔细看看再说话。

            searchRows = ImportData(strWeatherOutPath).Select(strConditon.ToString(), "时间 desc");
            foreach (DataRow searchRow in searchRows)
            {
                dtResult.ImportRow(searchRow);
            }
            dtResult = dtResult.DefaultView.ToTable(true, "时间", "1型", "2型", "3型", "4型");
            dgvMode.DataSource = dtResult;

            dtResult.DefaultView.Sort = "时间 asc";
            DataTable graphDataTable = dtResult.DefaultView.ToTable();
            modeMain.drawGraph(graphDataTable);

你可能感兴趣的:(Datatable)