2012-12-10 31 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)