C# 使用Dataview.RowFilter从SomeTable中选择前5个*?

C# 使用Dataview.RowFilter从SomeTable中选择前5个*?,c#,asp.net,ado.net,C#,Asp.net,Ado.net,我需要从缓存的Dataview对象中选择5个最近的行,有什么方法可以做到这一点吗 我已尝试,但索引器数据列为空: public static DataView getLatestFourActive() { DataTable productDataTable = getAll().ToTable(); DataColumn ExpressionColumn = new DataColumn("Indexer",typeof(System.Int32)); Express

我需要从缓存的Dataview对象中选择5个最近的行,有什么方法可以做到这一点吗

我已尝试,但索引器数据列为空:

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;
}
publicstaticdataview getLatestFourActive()
{
DataTable productDataTable=getAll().ToTable();
DataColumn ExpressionColumn=新的DataColumn(“索引器”,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和Indexer我在中遇到了上述相同的示例,但上一篇文章说提供的代码不起作用

但是,它有一个可行的解决方案,因此您可以使用以下代码:

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);
}
publicstaticdataview getLatestFourActive(){
DataTable productDataTable=getAll().ToTable();
DataTable cloneDataTable=productDataTable.Clone();
对于(int i=0;i<4;i++){
cloneDataTable.ImportRow(productDataTable.Rows[i]);
}       
返回新的数据视图(cloneDataTable);
}

您可能还需要一个.OrderByDescending()。我没有Take()方法,可能这是只使用LINQ的类型化数据集。我从简单的sqldataadpeter.Fill()方法中获得了非类型化数据视图。
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);
}