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

问题描述 投票:0回答:3

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

我想限制最终记录集中的记录数但在生成数据表时无法做到这一点

我已采取从最终结果集中删除行的方法,如下所示:

                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;

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

c# ado.net datatable
3个回答
6
投票

您可以使用 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;

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


1
投票

尝试将前 x 行从一个数据表复制到新数据表中。

 DataTable newdataTable = dataTable.AsEnumerable().Take(50).CopyToDataTable();

然后使用它。


0
投票

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

DataRow[] rows1 = dTable.Select(" RowIncrement < 50", "EventDate ASC");

RowIncrement 是类似于 ROWNUM 的列

© www.soinside.com 2019 - 2024. All rights reserved.