仅保留数据表的前10行

时间:2012-12-10 10:20:33

标签: c# datatable

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

例如,我有14行,只需要前10行,我怎样才能删除最后4行?

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

2 个答案:

答案 0 :(得分: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();

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

答案 1 :(得分:0)

如果您的数据库是Sql Server:

Delete From VictimTable
       Where ID Not In(
       Select Top 10 ID From VictimTable Order By SomeColumn)