Re: [.NET] 把dataTable 變成 string(0

作者: fumizuki (矇面加菲獅)   2016-11-25 23:14:03
※ 引述《wind681201 (阿風~~)》之銘言:
: 請輸入專案類型(網站專案或者應用程式專案):asp.net
: 想請問大大:我想用datatable 裡面的一個欄位,轉成 string()
: 怎麼做比較快?效能比較好呢?
: 我現在是用迴圈的方式去加,但這樣效能很不好。
: 我的datatable會先用select選出要的datarow,然後我只要裡面其中一個欄位
: 把欄位的值,轉成字串陣列 String() 。
以下是你想要做的事嗎?
測試環境:.NET Framework 4.5.1
Dim st As Date
'方法1 Linq to DataTable
st = Date.Now
Dim ValueList1 As String() = (
From a In dt.AsEnumerable()
Select column2 = a("column2").ToString()
).ToArray()
Response.Write(Date.Now.Subtract(st).Milliseconds & "<br />")
'方法2 填入字串陣列,使用 For 迴圈
st = Date.Now
Dim ValueList2 As String() = New String(dt.Rows.Count - 1) {}
For i As Integer = 0 To dt.Rows.Count - 1
ValueList2(i) = dt.Rows(i)("column2").ToString()
Next
Response.Write(Date.Now.Subtract(st).Milliseconds & "<br />")
'方法3 填入字串陣列,使用 For Each 迴圈
st = Date.Now
Dim ValueList3 As String() = New String(dt.Rows.Count - 1) {}
Dim Index As Integer = 0
For Each Row As DataRow In dt.Rows
ValueList3(Index) = Row("column2").ToString()
Index += 1
Next
Response.Write(Date.Now.Subtract(st).Milliseconds & "<br />")
'方法4 填入 List 泛型,使用 For Each 迴圈
st = Date.Now
Dim StringList As New List(Of String)
For Each Row As DataRow In dt.Rows
StringList.Add(Row("column2").ToString())
Next
Dim ValueList4 As String() = StringList.ToArray()
Response.Write(Date.Now.Subtract(st).Milliseconds & "<br />")
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-11-26 11:46:00
現在不用StringBuilder了嗎
作者: fumizuki (矇面加菲獅)   2016-11-26 12:06:00
因為目標是字串陣列,所以沒使用 StringBuilder
作者: wind681201 (阿風~~)   2016-11-26 16:32:00
對,謝謝你,我會用方式一這一個,比較適合我

Links booklink

Contact Us: admin [ a t ] ucptt.com