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);