如何限制数据表中的行数?

Ian*_*n G 5 c# datatable ado.net

我生成一个 DataTable(从非 SQL 数据),然后使用 DataView 来过滤记录。

我想限制最终记录集中的记录数,但在生成 DataTable 时无法执行此操作

我已经诉诸于从最终结果集中删除行,如下所示:

                DataView dataView = new DataView(dataTable);
                dataView.RowFilter = String.Format("EventDate > '{0}'", DateTime.Now);
                dataView.Sort = "EventDate";
                dataTable = dataView.ToTable();

                 while (dataTable.Rows.Count > _rowLimit)
                    dataTable.Rows[dataTable.Rows.Count - 1].Delete();

                 return dataTable;
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来限制结果?

The*_*der 5

您可以使用 Linq:

尝试将您的代码更改为以下内容:

DataView dataView = new DataView(dataTable);
dataView.RowFilter = String.Format("EventDate > '{0}'", DateTime.Now);
dataView.Sort = "EventDate";
dataTable = dataView.ToTable();
while (dataTable.Rows.Count > _rowLimit)
{
    dataTable = dataTable.AsEnumerable().Skip(0).Take(50).CopyToDataTable();
}
return dataTable;
Run Code Online (Sandbox Code Playgroud)

你需要命名空间:System.Linq 和 System.Data


V4V*_*tta 0

您能否添加一个类似于 rowcount 1,2,3 的列,就像您将非 SQL 数据中的行添加到数据表时递增一样。也许之后你可以使用

DataRow[] rows1 = dTable.Select(" RowIncrement < 50", "EventDate ASC");
Run Code Online (Sandbox Code Playgroud)

RowIncrement 是类似于 ROWNUM 的列