- UiPath RPA開發:入門、實戰與進階
- 邵京京等
- 2812字
- 2021-08-06 14:57:37
3.2.9 List
列表(List)類型也是一種Object類型,用于在程序中存儲一系列數據的集合,并且List允許增加和刪除元素,更加靈活。List可通過Index(索引)訪問,UiPath中也提供對List進行搜索、排序和操作的方法。當程序中需要保存同一系列的數據集合,并且還需要對數據進行增減時,都可用List類型,例如某活動的參與者名單等。
List類型不在Variables面板的Variable type下拉列表的默認選項中,它可以在Browse and Select a .Net Type對話框中的系統命名空間System.Collections.Generic下找到,如圖3-159所示。List<T>中的T表示List中元素的數據類型。

圖3-159 List類型示例
與Array一樣,List中的元素可以是任何類型,如String型、Int32型、Double型及其他.Net中的數據類型。List的值也必須放在一對英文大括號中間,且每個值之間用逗號隔開,如{12,14,15}、{"張鑫",王強","李瑤"}等。
在需要取得List中某個元素的值或為某個元素賦值時,可以使用下標來實現,具體表現形式為List(Index)。List的下標是從0開始計算的,也就是說List中的第一個元素表示為List(0)。例如List型變量NumberList的值為{12,14,15},該List的第一個元素NumberList(0)的值為12,第二個元素NumberList(1)的值為14,第三個元素NumberList(2)的值為15。
List類型作為一種Object類型,與Dictionary類型一樣,需要實例化之后才可以使用。它的構造函數形式為new List(Of Type) From {Value1,Value 2}。List型變量在Variables面板中的顯示如圖3-160所示。

圖3-160 List型變量在Variables面板中的顯示

圖3-161 幾種操作List的活動
List的長度指的是List中元素的個數,可以使用List.Count獲取,表示List中有多少個相同類型的數據,如{1,2,3,4}.Count的結果為4。
UiPath提供了幾種操作List的活動,位于活動面板System.Activities.Statements下,如圖3-161所示。
它們的功能分別如下所示。
□Add To Collection:將指定的元素添加到List中。
□Clear Collection:從List中移除所有元素。
□Exists In Collection:判斷指定元素在List中是否存在。
□Remove From Collection:從List中移除指定的元素。
除此之外,還可以使用一些.Net方法來對List進行操作,這些方法需要借助特定的活動來實現,例如Invoke Method和Invoke Code,這兩種活動的詳細使用方式請參照Dictionary章節的例3.14和例3.15。常用的List型相關方法有如下幾種。
□List.Add(Item):在List中添加一個元素。
□List.Insert(Index,Item):在Index位置添加一個元素。

圖3-162 流程圖
□List.Contains(Item):確定指定的元素是否存在于該List中。
□List.Sort():為List里面的元素排序,默認是按升序排序。
□List.Remove(Item):在List中移除指定的元素。
□List.Clear():在List中移除所有元素。
【例3.17】使用List變量完成添加和打印某活動參與者信息的流程。創建一個項目,使用List存儲某活動的現有參與者名單(張鑫、王強),在List中添加參與者李瑤,并在Output面板輸出第一個和第三個參與者的名字。流程圖如圖3-162所示。
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_17_List,如圖3-163所示。

圖3-163 新建流程
2)拖入一個Sequence活動到設計器面板。在Properties面板中,將Sequence活動的DisplayName屬性更改為“某活動參與者管理”,如圖3-164所示。
3)在Variables面板中創建List型變量ParticipantsList,用于存儲某活動的參與者信息。默認的Variable type下拉列表中不含有List型,可以選擇Browse for Types...選項,如圖3-165所示。

圖3-164 拖入Sequence活動并更改屬性

圖3-165 創建變量
4)系統隨即會顯示Browse and Select a .Net Type對話框,在Type Name字段中輸入想要查找的變量類型關鍵字List,選擇System.Collections.Generic.List<T>,此時窗口上方的下拉列表中為List中的元素選擇String型后點擊OK按鈕,如圖3-166所示。

圖3-166 更改變量類型為List類型
5)此時Variables面板中變量ParticipantsList的數據類型被更改為List型,如圖3-167所示。

圖3-167 更改變量類型后的Variables面板
6)拖入一個Assign活動到“某活動參與者管理”活動中。在Properties面板中,將DisplayName屬性更改為“存儲現有參與者”,在To屬性中輸入ParticipantsList,在Value屬性中輸入new List(Of String) From {"張鑫","王強"},如圖3-168所示。

圖3-168 存儲現有參與者

圖3-169 搜索Add To Collection活動
7)在Activities面板的搜索框內輸入add to collection,如圖3-169所示。
8)將Add To Collection活動拖入“某活動參與者管理”活動中。在Properties面板中,將DisplayName屬性更改為“添加參與者信息”,在Collection屬性中輸入變量ParticipantsList,在Item屬性中輸入“"王瑤"”,將TypeArgument更改為String,如圖3-170所示。

圖3-170 添加參與者信息
9)拖入一個Write Line活動到“某活動參與者管理”活動中。在Properties面板中,將DisplayName屬性更改為“輸出第一個和第三個參與者”,將Text屬性更改為“ParticipantsList(0)+","+ParticipantsList(2)”,如圖3-171所示。

圖3-171 輸出第一個和第三個參與者
10)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-172所示。
同樣的,想要遍歷List時也可以參照對Dictionary進行遍歷的案例。在實際項目中,我們有時還會遇到需要對數據進行去重的情況,例如對員工打卡系統中每天多次打卡數據的去重,這時可以對集合中的數據進行遍歷,然后利用Set的特性完成,如例3.18所示。
【例3.18】使用Set完成對員工打卡記錄去重的流程。創建一個項目,將某員工的打卡記錄("20210101", "20210102", "20210102", "20210103")存儲在List型變量中,利用Set的特性對該員工的打卡記錄進行去重,并在Output面板輸出所有的打卡日期。流程圖如圖3-173所示。

圖3-172 執行結果

圖3-173 流程圖
具體實現步驟如下所示。
1)進入Studio界面,點擊Process創建一個新流程,命名為3_18_RemoveListDuplication-BySet,如圖3-174所示。

圖3-174 新建流程
2)拖入一個Sequence活動到設計器面板。在Properties面板中,將Sequence活動的DisplayName屬性更改為“打卡系統管理”,如圖3-175所示。

圖3-175 拖入Sequence活動并更改屬性
3)在Variables面板中創建List型變量WorkDateList,用于存儲員工的打卡記錄。默認的Variable type下拉列表中不含有List型,可以選擇Browse for Types...選項,如圖3-176所示。

圖3-176 創建變量
4)系統隨即會顯示Browse and Select a .Net Type對話框,在Type Name字段中輸入想要查找的變量類型關鍵字List,選擇System.Collections.Generic.List<T>,此時對話框上方的下拉列表中為List中的元素選擇String型后點擊OK按鈕,如圖3-177所示。
此時Variables面板中變量WorkDateList的數據類型被更改為List型,如圖3-178所示。

圖3-177 更改變量類型為List類型

圖3-178 更改變量類型后的Variables面板
5)拖入一個Assign活動到“打卡系統管理”活動中。在Properties面板中,將DisplayName屬性更改為“存儲員工打卡記錄”,在To屬性中輸入WorkDateList,在Value屬性中輸入new List(Of String) From {"20210101","20210102","20210102","20210103"},如圖3-179所示。

圖3-179 存儲員工打卡記錄
6)拖入一個For Each活動到“打卡系統管理”活動中。在Properties面板中,將DisplayName屬性更改為“將打卡記錄去重”,將TypeArguments屬性更改為String,在Values屬性中輸入變量WorkDateList,該活動會遍歷WorkDateList中的所有元素,如圖3-180所示。
7)在Variables面板中創建HashSet型變量WorkDateSet,用于對員工的打卡記錄進行去重。默認的Variable type下拉列表中不含有HashSet型,可以選擇Browse for Types...選項,如圖3-181所示。

圖3-180 拖入For Each活動并更改屬性

圖3-181 創建HashSet型變量
8)系統隨即會顯示Browse and Select a .Net Type對話框,在Type Name字段中輸入想要查找的變量類型關鍵字hashset,選擇System.Collections.Generic.HashSet<T>,此時對話框上方的下拉列表中為HashSet中的元素選擇String型后點擊OK按鈕,如圖3-182所示。

圖3-182 選擇HashSet型變量及HashSet中的元素類型
9)此時Variables面板中變量WorkDateList的數據類型被更改為List型,在Default字段中填寫new HashSet(Of String)使變量WorkDateList實例化,如圖3-183所示。

圖3-183 HashSet型變量初始化
10)拖入一個Add To Collection活動到“將打卡記錄去重”活動中。在Properties面板中,將DisplayName屬性更改為“存儲去重后的打卡記錄”,在Collection屬性中輸入變量WorkDateSet,在Item屬性中輸入item,將TypeArgument更改為String,如圖3-184所示。

圖3-184 存儲去重后的打卡記錄
11)現在我們已經將去重后的打卡記錄存入WorkDateSet中了,再拖入一個For Each活動到“打卡系統管理”活動中。在Properties面板中,將DisplayName屬性更改為“遍歷打卡日期”,將TypeArguments屬性更改為String,在Values屬性中輸入變量WorkDateSet,如圖3-185所示。
12)拖入一個Write Line活動到“遍歷打卡日期”活動中。在Properties面板中,將DisplayName屬性更改為“輸出打卡日期”,將Text屬性更改為item,如圖3-186所示。

圖3-185 遍歷打卡日期

圖3-186 輸出打卡日期
13)按F5鍵執行流程,將在Output面板中顯示執行結果,如圖3-187所示。

圖3-187 執行結果
- Instant Testing with CasperJS
- Learning ROS for Robotics Programming(Second Edition)
- Python數據分析入門與實戰
- 密碼學原理與Java實現
- C/C++算法從菜鳥到達人
- JIRA 7 Administration Cookbook(Second Edition)
- Mastering Entity Framework
- TestNG Beginner's Guide
- Selenium Design Patterns and Best Practices
- Python零基礎快樂學習之旅(K12實戰訓練)
- Python自然語言處理(微課版)
- MySQL數據庫管理與開發(慕課版)
- 零基礎學Java程序設計
- JavaScript 程序設計案例教程
- Spring Security Essentials