我目前有一个按特定列排序的数据表,一旦完成排序,我想摆脱底部不需要的数据行,
例如,我有 14 行,只需要前 10 行,如何删除后 4 行?
从存储在数据表中的错误文件电子表格文件中查询数据表,然后我对数据进行排序,然后只想获取前 10 行
您可以使用 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();
第一种方法让您的数据表保留所有原始行,仅提取需要的行,第二种方法将更新您的数据表,删除不需要的行(当然只在内存中)
如果您的数据库是 Sql Server:
Delete From VictimTable
Where ID Not In(
Select Top 10 ID From VictimTable Order By SomeColumn)