【UiPath2022+C#】UiPath 数据操作-练习1

简介: 给定国家/地区的输入列表,请对该列表进行排序,并按降序打印前 3 个值。

环境

UiPath Studio Community 2022.4.3

Windows

C#

练习

练习 1 - 列表

对列表进行排序并打印 3 个值

给定国家/地区的输入列表,请对该列表进行排序,并按降序打印前 3 个值。

注意:请使用此值初始化列表:new List(of String) from {"Germany", "Spain", "Japan", "Brazil", "India", "China"}。

解决方案

  1. 序列形式启动项目并使用以下默认值定义字符串变量(“country”)的列表,默认值为:new List(string) (){"Germany", "Spain", "Japan", "Brazil", "India", "China"}。
  2. 添加一个调用方法活动。在“方法名称”下写入“Sort”,在“目标对象”下写入“country”。保持“目标类型”不变 (null)。
  3. 在“方法名称”下再添加一个“调用方法”活动。在“方法名称”下写入“Reverse”,并填写其他 2 个字段,就像在前面的“调用方法”中一样
  4. 创建一个新的字符串变量列表newVariable
  5. 向“设计器”面板添加一个“分配”活动。
  6. 字段中,输入原始变量的名称,再输入 country.GetRange(0,3)。此变量将前三个值存储在排序列表中。
  7. 添加一个“写入行”活动。这将打印值。
  8. 使用“string.Join”方法:string.Join (", ", newVariable.ToArray()),在“写入行”活动的文本中。

练习列表.png

练习 2 - 列表和日期时间

验证列表中的日期在今年是否已过

给定格式为 dd.MM.yyyy 的输入字符串列表,请检查是否有任何日期的月份与当前月份相同,然后打印该日期以输出。

对于具有不同月份的日期,请打印以输出从当前日期到列表日期(当年)为止经过/到期的天数。

注意:使用以下值初始化列表:new List(of String) from {"01.02.1980", "04.05.1985","06.08.1988","24.09.1999","18.11.1986","11.10.1983"}

解决方案

在序列中使用遍历循环活动遍历列表中的所有项目(“变量名中的遍历循环项目”),并在正文中使用以下活动和方法:

  1. 创建一个日期时间变量(“dateTime”),并使用“DateTime.ParseExact”方法,在“分配”活动中,以转换为日期时间:dateTime= DateTime.ParseExact(item, "dd.MM.yyyy", null)
  2. 使用“IF 条件”活动以验证项目的月份是否与当前月份相同:dateTime.Month == DateTime.Today.Month:

    • 如果满足条件,则使用“写入行”活动和“ToString("yyyy-MM-dd")”方法打印消息。
    • 如果不满足条件,则使用以下活动和方法添加序列:
    • a. 使用“分配”活动中的“Subtract”方法创建一个新的 int32 类型的变量(“day”),以计算当月与项目月份之间的差值:day = DateTime.Now.Subtract(new DateTime(DateTime.Today.Year, dateTime.Month, dateTime.Day)) .Days
    • b. 将条件声明为 day > 0,然后使用“IF 条件”活动验证日期是未来日期还是过去日期,并使用“写入行”活动中的“String.Format”方法为过去或未来月份打印不同的消息:string.Format("从当前日期到列表日期(当年{0}月{1}日)为止经过{2}天",dateTime.Month, dateTime.Day,day) 和 string.Format("从当前日期到列表日期(当年{0}月{1}日)为止到期还剩下{2}天",dateTime.Month, dateTime.Day,Math.Abs(day)).

    流程和变量

    列表日期1.png

If语句

列表日期2.png

练习 3 - 字典和整数

计算并打印每位环法自行车赛冠军的获胜次数

给定包含年份和姓名的输入字典,请计算每位冠军的获胜次数,并打印所有冠军的姓名及其相应的获胜次数。

注意:使用以下值初始化(Int32、字符串)类型的字典 - New Dictionary(Of Int32,String) From {{2006,"Oscar Pereiro"},{2007,"Alberto Contador"}, {2008, "Carlos Sastre"}, {2009,"Alberto Contador"}, {2010, "Andy Schleck"}, {2011, "Cadel Evans"}, {2012,"Bradley Wiggins"}, {2013,"Chris Froome"}, {2014,"Vincenzo Nibali"},{2015,"Chris Froome"},{2016,"Chris Froome"},{2017,"Chris Froome"}, {2018,"Geraint Thomas"}}

解决方案

  1. 序列形式启动项目并创建一个新的字典,类型为 (String, Int32)
  2. 利用“遍历循环”(“遍历 FirstDictionaryName.Values 中的 WinnerNames”)遍历第一个字典中的值,并检查该值是否已存在且已作为新字典的键,检查时使用“.ContainsKey”方法,该方法在“IF 条件”活动(“SecondDictionaryName.ContainsKey(WinnerName)”)中:

    1. 如果满足条件,则使用“分配”活动以增加相应键的值:WinnerCounts(WinnerName) = WinnerCounts(WinnerName) + 1
    2. 如果不满足条件,则使用“调用方法”活动将键添加到第二字字典,其值为“1”,以及使用目标对象添加第二个字典名称,并“Add”作为方法名称
  3. 使用“遍历循环”活动遍历第二个字典(“SecondDictionaryName 中的遍历循环冠军”),并利用“写入行”活动打印所有冠军的姓名及其相应的获胜次数。

流程和变量

字典1.png

遍历循环

字典2.png

练习 4 - 字典和双精度数

计算发送到一个城市的包裹总重量

考虑某家航运公司的数据库,其中包含公司人员,以及公司发往世界各地某些城市的包裹及其重量。该数据库是一个字典,其键为字符串类型(人员姓名),值为字典类型(字符串/城市、双精度数/重量)。

请计算一个城市目的地的总重量。计算完成后,应向用户显示一个输入对话框,其中包含输入数据字典中显示的不同城市列表。如果用户没有从输入对话框中选择任何值,则打印“用户未选择任何值”;否则,您可以打印“发送到 <选定城市> 的包裹总重量为 x.xx”(使用两位数)。

注意:对于输入数据,请下载下面已定义字典的工作流。

New Dictionary(Of String, Dictionary(Of String, Double)) From {

{"John C", New Dictionary(Of String, Double) From {{"Madrid",2.1},{"Paris",1.1}} },

{"Sarah C", New Dictionary(Of String, Double) From {{"New York",2.1},{"Paris",3.3},{"Berlin", 0.8}} },

{"Kyle R", New Dictionary(Of String, Double) From {{"San Francisco",2.8},{"NewYork",1.1}} },

{"Johnny B", New Dictionary(Of String, Double) From {{"New York",2.1},{"Paris",3.3}, {"Cairo",1.3},{"Chicago",1.9}} }}

解决方案

  1. 序列形式启动项目.
  2. 使用“遍历循环”遍历初始字典的值,然后(在正文中)使用“遍历循环”活动遍历第二个字典(城市)的键,并检查字典中是否已有城市,(使用“IF 条件”和“包含”方法):

    1. 如果满足条件,则使用“分配”活动将存储在相应值中的重量添加到现有值中;
    2. 如果不满足条件,则使用“分配”活动将存储在相应值中的重量;

3.使用“输入对话框”活动,通过在“活动”属性的“选项”下使用 SecondVariableName.Keys.ToArray() 显示所有城市

a.如果用户选择城市,则使用“写入行”打印“发送到 <选定城市> 的包裹总重量为 x.xx”。

流程和变量

字典和双精度.png

For Each配置

字典和双精度1.png

If配置

字典和双精度2.png

文档

循环
If条件语句
数据操作

相关文章
|
13天前
|
测试技术 API C#
C#使用Bogus生成测试数据
C#使用Bogus生成测试数据
22 1
|
14天前
|
存储 C# 数据库
解决C#对Firebase数据序列化失败的难题
在游戏开发中,Unity结合Firebase实时数据库为开发者提供强大支持,但在C#中进行数据序列化和反序列化时常遇难题。文章剖析了数据丢失或反序列化失败的原因,并给出解决方案,包括使用`JsonUtility`、确保字段标记为`[Serializable]`以及正确配置网络请求。示例代码演示了如何在Unity环境中实现Firebase数据的序列化和反序列化,并通过设置代理IP、Cookies和User-Agent来增强网络请求的安全性。这些技巧有助于确保数据完整传输,提升开发效率。
解决C#对Firebase数据序列化失败的难题
|
14天前
|
数据库
C#Winform使用NPOI获取word中的数据
C#Winform使用NPOI获取word中的数据
61 2
|
13天前
|
开发框架 .NET C#
WPF/C#:显示分组数据的两种方式
WPF/C#:显示分组数据的两种方式
24 0
|
13天前
|
XML C# 数据格式
WPF/C#:如何将数据分组显示
WPF/C#:如何将数据分组显示
23 0
|
13天前
|
C# Windows
WPF/C#:如何显示具有层级关系的数据
WPF/C#:如何显示具有层级关系的数据
24 0
|
13天前
|
开发框架 算法 .NET
C#使用MiniExcel导入导出数据到Excel/CSV文件
C#使用MiniExcel导入导出数据到Excel/CSV文件
25 0
|
3月前
|
SQL 存储 开发框架
C# DataSet结合FlyTreeView显示树状模型数据
C# DataSet结合FlyTreeView显示树状模型数据
|
3月前
|
XML 存储 开发框架
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
107 0