2011-07-21 52 views
0

我有一個函數返回一個數據表,我添加了一個代碼,將使用數據視圖對數據表進行排序,並應從排序的數據視圖返回前10行。如何使用C#使用Take()返回數據表(#)

DataView dvDt = dtData.DefaultView; 
dvDt.Sort = "Value DESC" 
var vlist = dvDt.ToTable().AsEnumerable().Take(10); 

我想知道如何確保我得到的datatable作爲返回項目。如何將「vlist」轉換爲數據表?

我使用:C#和.net 3.5框架。

+0

你爲什麼要一個DataTable?你會用它做什麼,需要一張桌子?據我所知,沒有自動化的方式來做到這一點:你必須創建自己的表與正確的列,並手動傳輸每一行(使用.NewRow()/。AddRow()),但大多數時候你不需要這樣做:您可以按照原樣將vlist指定爲數據源。 –

+0

夥計們,我正在研究一個將數據表返回給調用程序的現有函數。我只是添加了代碼進行排序,並從傳遞的數據集中獲取前10條記錄。 –

回答

3

您可以使用DataTableExtensions.CopyToDataTable

var table = vlist.CopyToDataTable(); 
+0

這隻有在'vlist'是'IEnumerable 其中T:DataRow'時纔會起作用。 –

+0

@Chris:鑑於它的構建方式,在這種情況下不會是這種情況嗎? –

+0

@Jon:就這樣。在我的腦海裏,我知道你最終會變得正確。 –

0

您將需要創建一個新的DataTable的實例,向其添加適當的列,然後迭代vlist並通過NewRow方法填充數據表。沒有內置的方法可以爲你做到這一點。