2012-03-17 73 views
1

我想按照與前面的DataTable相同的順序從DataTable中獲得前10行。如何獲得排序後的數據表的前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

只需使用一個查詢和排序是這樣的:

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

希望它能幫助!

+0

它引發此錯誤語法錯誤:'10'運算符後缺少操作數。 – Seesharp 2012-03-17 19:23:40

+0

對不起,我使用了不正確的代碼。我已經編輯它,看看它現在是否適用於你。 – Reinaldo 2012-03-17 19:27:50

+0

感謝您的編輯,現在它引發了這個語法錯誤:'DESC'操作符後缺少操作數。 – Seesharp 2012-03-17 19:34:19

2

你整理的數據,而不是數據本身的視圖;因此,當您訪問行時,您將再次訪問的數據是未排序的數據。

您需要使用Select()從dt1中獲得一組有序的行,然後從獲取的行。

+0

是的,我是想選擇,但我得到的語法錯誤dt1.Select( 「X說明」);.什麼是正確的方法來做到這一點? – Seesharp 2012-03-17 19:20:22

+1

(請參閱Reinaldo的答案。) – JTeagle 2012-03-17 19:22:20

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

相關問題