johnb 發表於 17-11-26 12:07

請教Datatable排序問題

請教各位大大,我接收股票資料到datatable(dt1),如圖一所示,我想將這十檔股票資料依成交量(volume)由大到小做排序之後,抓前六檔放入dt2,如圖二所示;請教各位大大這語法要如何撰寫.

shunyulu 發表於 17-11-26 13:09

INSERT INTO dt2
SELECT TOP 6 FROM dt1 ORDER BY VOLUME

sidetalker 發表於 17-11-26 15:11

shunyulu 發表於 17-11-26 13:09
INSERT INTO dt2
SELECT TOP 6 FROM dt1 ORDER BY VOLUME

小 BUG: ORDER BY VOLUME DESC (由大排到小)

cukie 發表於 17-11-26 16:22

感謝分享{:4_151:}   

johnb 發表於 17-11-26 21:42

小弟剛使用Visual studio平台不久,對程式語法還不是很熟,可否請前輩們提供程式碼,讓我可以比較容易理解.感激不盡!!

shunyulu 發表於 17-11-26 22:23

隨便寫寫, this is VB, 可能有typo, 用LINQ更快, 不過你是初學者就這樣做.
要先Imports進來datatable的命名空間System.Data

Dim dt1 as new datatable
Dim dv1 as dataview
Dim dc as datacolumn
Dim dt2 as new datatable
Dim dr as datarow
Dim i as integer

'..... create 你要的data column
dc = new datacolumn()
dc.Name = "StockCode"
dc.DataType = Type.("System.String")
dt1.columns.add(dc)
'.....
'..... create whatever columns 你要的

'把你要的資料新增到dt1
dr = dt1.newrow
dr("StockCode") = ???
dr("FieldName2") = ???
dt.rows.add(dr)

'我喜歡用dataview, 用datatable直接排序也行
dv1 = new dataview(dt1)
dv1.Sort = "Volumn DESC"

' create 你要的 dt2, 或是直接複製dt1的結構
for i = 0 to 5
dr = dt2.NewRow
dr("FieldName1") = dv1(i)("FieldName1")
dr("FieldName2") = dv1(i)("FieldName2")
.......
'把資料列複製到dt2
dt2.rows.add(dr)
Next

'甘巴爹

johnb 發表於 17-11-27 21:59

寫的很詳細,謝謝shunyulu大提供的程式碼!
頁: [1]
查看完整版本: 請教Datatable排序問題