2012-12-10 29 views
0

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

例如,我有14行,只需要前10位,我将如何能够删除底部的四个?

的数据表上从存储在数据表中的FALT文件电子表格文件查询,那么我对数据进行排序,然后只需要取前10行

+0

它取决于您的RDMS。请将您的数据库类型作为标签添加到您的问题中。 – valex

+0

你是如何填充'DataTable'的? – adatapost

+0

类似于'datatable.AsEnumerable()。拿(10)'可能会工作 – V4Vendetta

回答

1

你可以使用LINQ的使用采取(10)提取前10名的纪录,但你有排序的数据表

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

当然,在此之后将重新排序AG ainst你的表,所以它的你来通过LINQ表达式以上或环上的默认视图行排序之间进行选择并删除不需要的那些

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

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

0

,如果你的数据库是SQL服务器:

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