DataView很遺憾的一點是沒有提供選擇,Top N行的功能,因此只能通過自定義方法實現
后來還是解決了,看似簡單其實也有幾個地方值得學習的:
public DataView SelectView(string NamePara,int TopValue)
{
SqlCode Scc = new SqlCode();
DataView Dview = Scc.SelectSortBooks().DefaultView;
string FilterR ="Name='" + NamePara + "'";
Dview.RowFilter = FilterR;
DataTable Dtable = Dview.Table.Clone(); //克隆DataTable 的結構,包括所有DataTable 架構和約束。
for (int i = 0; i <Dview.Count; i++)
{
if (i >= TopValue)
{
break;
}
Dtable.ImportRow(Dview[i].Row); //取前TopValue行,其他的不添加至DataTable
}
return new DataView(Dtable);
}
這里實現了將一個DataView經過RowFilter處理后,再獲取前N行,這里開始的DataView已經按降序排列好了。分析代碼:先獲得DataView的表架構用 Dview.Table,然后再克隆得到跟Dview相同的表架構和約束(包括列明,鍵....)。然后將整個Dview的行數循環,取你所要求的行數,這里是TopValue行,只需從0到TopValue-1行復制到我得到的克隆表里,其他的跳出,得到這個表之后,從而得到這個表的DataView
