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)
有没有更有效的方法来限制结果?
您可以使用 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
您能否添加一个类似于 rowcount 1,2,3 的列,就像您将非 SQL 数据中的行添加到数据表时递增一样。也许之后你可以使用
DataRow[] rows1 = dTable.Select(" RowIncrement < 50", "EventDate ASC");
Run Code Online (Sandbox Code Playgroud)
RowIncrement 是类似于 ROWNUM 的列
| 归档时间: |
|
| 查看次数: |
18303 次 |
| 最近记录: |