2010-04-13 81 views
2

我需要從緩存的Dataview對象中選擇5個最近的行,有沒有辦法做到這一點?使用Dataview.RowFilter從SomeTable中選擇TOP 5 *?

我試過了,但是Indexer DataColumn是空的。 :

public static DataView getLatestFourActive() 
{ 
    DataTable productDataTable = getAll().ToTable(); 
    DataColumn ExpressionColumn = new DataColumn("Indexer",typeof(System.Int32)); 
    ExpressionColumn.Unique = true; 
    ExpressionColumn.AutoIncrement = true; 
    ExpressionColumn.AllowDBNull = false; 
    ExpressionColumn.AutoIncrementSeed = 0; 
    ExpressionColumn.AutoIncrementStep = 1; 
    productDataTable.Columns.Add(ExpressionColumn); 

    DataView productFilteredView = productDataTable.DefaultView; 
    productFilteredView.RowFilter = "isActive=1 and Indexer<4"; 
    return productFilteredView; 
} 

GETALL()返回緩存數據視圖

感謝

回答

3

我遇到上述this article相同的樣品,但過去後說,所提供的代碼無法正常工作。

然而,this article有一個解決方案,它的工作,所以這裏的,你可以使用代碼:你可能會想要一個.OrderByDescending()上有作爲

public static DataView getLatestFourActive() { 
    DataTable productDataTable = getAll().ToTable(); 
    DataTable cloneDataTable = productDataTable.Clone(); 

    for (int i = 0; i < 4; i++) { 
     cloneDataTable.ImportRow(productDataTable.Rows[i]); 
    }  
    return new DataView(cloneDataTable); 
} 
+0

做過這份工作,謝謝! – eugeneK 2010-04-13 09:50:01

0
getALL().Take(5); 
+0

。 – GordonB 2010-04-13 07:44:19

+0

我沒有Take()方法,可能只有使用LINQ才能輸入數據集。我有從簡單的SqlDataAdpater.Fill()方法無類型Dataview。 – eugeneK 2010-04-13 07:48:52