如何从排序的DataTable中获取前10行?

时间:2012-03-17 19:04:59

标签: c# .net datatable

我想从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]);
    }

3 个答案:

答案 0 :(得分:3)

只需使用这样的查询和排序:

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

希望它有所帮助!

答案 1 :(得分:2)

您正在对数据的视图进行排序,而不是数据本身;因此,当您访问行时,它是您再次访问的未排序数据。

您需要使用Select()从dt1获取一组已排序的行,然后从中获取的行。

答案 2 :(得分:2)

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 - DataTable.Select