今天給大家分享一下,如何將DataTable轉為List和Array,為此小U也花了不少時間研究,最后發現沒有那么復雜。
先來說說List和Array的區別:
List:就像一個鏈條,存儲數據的空間可以不連續。
Array:就像一個Execl中的某一列,但是它必須在聲明的時候就指定存儲空間的大小,換句換話就是聲明的時候需要初始化數據的大小。
那什么時候用Array,什么時候用List呢?
總結1:當我們不確定大小時,最好使用List代替Array
總結2:當需要大量的查找操作時,最好使用Array,誰用誰知道。
總結3:當需要進行頻繁的插入,刪除操作時,最好使用List代替Array
最后:由於List需要存儲他下一個節點的地址,所以浪費更多的空間
下面小U將給大家講解一下如何轉換,本例中使用的Activity有:
- Execl Application Scope
- Read Range
- Output Data Table
- Write Line
- Log Message
- For Each Row
- Invoke Method---轉換成List時使用
- For Each
- Assign---轉換成數組時使用
整個流程看起很長,實際的原理很簡單,請小伙伴耐心看完
(一) 我們來看看如何輸出DataTable,這個其實很簡單,直接新建一個OutputDataTable的activity就可以了
由於我的表格里面沒有標題行,所以要去掉標題
看到了吧,就是這么簡單,只需要記住他是將整個DataTable里面的內容作為一個字符串輸出。
(二)如何將DataTable轉換成List呢?
開始這個問題一直都不知道,總想着用ForEachRow讀取,然后直接賦值,結果怎么都不行,好在發現了方法,通過Invoke Method中的Add可以實現,注意定義的List的類型是List<String>,並且在Default中需要這樣處理new List(of string)
---------------------------更新內容-----------------------------
在使用Invoke Method的時候,我們需要進行參數設定,如下圖
漏掉了參數說明,很多同學都卡在這里的,今天把這個追加進去
打印就很簡單了,直接使用ForEach,注意不是ForEachRow
(三)如何將List轉換為數組,這個其實也非常簡單
只需要這一步即可,array的類型是String[]
最后,我們來看看輸出結果