如何从排序的DataTable中获取前10行
本文关键字:获取 10行 DataTable 排序 | 更新日期: 2023-09-27 18:28:04
我想以与上一个DataTable相同的顺序从DataTable中获取前10行。
使用下面的代码,我可以在dt1中对其进行排序,并只将10行导入dt2,但这并不是按排序顺序导入行。我需要它来保持有序。我们将非常感谢你的帮助。
DataTable dt2 = dt1.Clone();
dt1.DefaultView.Sort = "x DESC";
for (int i = 0; i < 10; i++)
{
dt2 .ImportRow(dt1.Rows[i]);
}
只需使用这样的查询和排序:
DataTable dt2 = dt.Clone();
//get only the rows you want
DataRow[] results = dt.Select("", "x DESC");
//populate new destination table
for(var i=0; i < 10; i++)
dt2.ImportRow(results[i]);
希望它能有所帮助!
您排序的是数据的视图,而不是数据本身;因此,当您访问这些行时,您再次访问的是未排序的数据。
您需要使用Select()从dt1中获取一组经过排序的行,然后从中获取的行。
void GetSortedTable(int count, string order = "DESC")
{
// Get our data table sorted by 'x' in a specific 'order'.
DataRow[] results = dt.Select("", "x " + order);
// Create a new empty data table.
DataTable dt2 = dt.Clone();
// Import the resulting 'count' rows into it.
for (int i = 0; i < count; ++i)
dt2.ImportRow(results[i]);
return dt2;
}
相关:MSDN-数据表。选择