官术网_书友最值得收藏!

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 執行結果

主站蜘蛛池模板: 永川市| 大同市| 浦东新区| 新乡县| 龙里县| 洪湖市| 东港市| 石泉县| 万载县| 宽甸| 兰考县| 邯郸市| 永平县| 太康县| 五大连池市| 莱芜市| 英吉沙县| 遂溪县| 南康市| 韶关市| 定结县| 朝阳市| 双牌县| 天全县| 新和县| 容城县| 巨鹿县| 延庆县| 泽普县| 措勤县| 永善县| 略阳县| 基隆市| 板桥市| 通道| 张北县| 逊克县| 天长市| 霍邱县| 阜平县| 邻水|