0

我目前有一个按特定列排序的数据表,一旦完成排序,我想摆脱底部不需要的数据行,

例如,我有 14 行,只需要前 10 行,如何删除后 4 行?

从存储在数据表中的错误文件电子表格文件中查询数据表,然后我对数据进行排序,然后只想获取前 10 行

4

2 回答 2

1

您可以使用 Linq 使用 Take(10) 提取前 10 条记录,但在您对数据表进行排序之后

var records = datatable.AsEnumerable().OrderBy(v => v["FieldToUseAsSortOrder"]).Take(10); 
foreach(DataRow r in records)
{
    // process your records in order
}

当然,这将针对您的表重新进行排序,因此您可以选择通过上面的 LinQ 表达式进行排序还是在 DefaultView 行上循环并删除不需要的行

for(int x = 10; x < datatable.DefaultView.Count; x++)
{
    datatable.DefaultView[x].Row.Delete();
}
datatable.AcceptChanges();

第一种方法让您的数据表保留所有原始行,仅提取需要的行,第二种方法将更新您的数据表,删除不需要的行(当然只在内存中)

于 2012-12-10T11:00:38.010 回答
0

如果您的数据库是 Sql Server:

Delete From VictimTable
       Where ID Not In(
       Select Top 10 ID From VictimTable Order By SomeColumn)
于 2012-12-10T10:46:50.453 回答