[ADO.NET]DATATABLE 新增 DataTable.Row.Add DATAROW發生 這個資料列已經屬於其他資料表(使用情境 DataSet DataTable 取 TOP)

摘要:[ADO.NET]DATATABLE 新增 DataTable.Row.Add DATAROW發生 這個資料列已經屬於其他資料表(使用情境 DataSet DataTable 取 TOP)

這個情境是這樣的,有時候可能必須在 .cs  DataSet 或  DataTable  下取 TOP 前幾筆 (已經無法在資料庫下 SELECT TOP x 時)
這時候因該怎麼做呢?又會遇到什麼問題呢? 話不多說,請看說明。
一開始,可能很直覺想到就是使用以下的程式碼
 

// tb 為來源 Table 可能有100筆 // dtRss 為希望產生 TOP 10 後 存放的Table for (int iIndex = 0; 10 > iIndex; iIndex++) { dtRss.Rows.Add(tb.Rows[iIndex]); }

看起來好像很直覺,但執行後出錯誤訊息 這個資料列已經屬於其他資料
或是出現 (這個資料列已經屬於其他資料表)
那該怎麼處理呢?看來就是不同的結構無法這樣處理,
解決方法也很簡單針對本來的程式
1.先複製來源 DataTable的結構
2.使用複製資料方式加入資料列

//複製來源的結構 dtRss = tb.Clone(); for (int iIndex = 0; 10 > iIndex; iIndex++) { //透過複製的方式來將資料列資料加入 dtRss.ImportRow(tb.Rows[iIndex]); }

所以就這樣簡單兩行程式碼,就能做到在  DataTable 下做到複製資料行 及 SELECT TOP 的功能。

這次的範例有趣嗎?下次在介紹有趣的給你知道。