You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UiPath LINQ实现:识别同列相反值并更新对应列

UiPath中用LINQ匹配相反值并更新对应列

核心逻辑

针对需求——匹配C列中互为相反数的行,将未标记Credit/Debit的正数行的D列改为Debit,可以通过按绝对值分组+组内匹配的LINQ逻辑实现,一步完成筛选与更新。

实现代码(UiPath Assign活动中使用)

假设数据存储在DataTable变量dtData中,直接在Assign活动的右侧输入以下VB.NET风格的LINQ代码:

dtData = dtData.AsEnumerable().GroupBy(Function(row) Math.Abs(Convert.ToDecimal(row("C")))).SelectMany(Function(group)
    ' 筛选当前组内:C列为负数、且D列已标记Credit/Debit的行(待匹配的源行)
    Dim negativeTargetRows = group.Where(Function(r) 
        Convert.ToDecimal(r("C")) < 0 AndAlso 
        (r("D").ToString().Equals("Credit", StringComparison.OrdinalIgnoreCase) OrElse 
         r("D").ToString().Equals("Debit", StringComparison.OrdinalIgnoreCase))
    ).ToList()
    
    ' 筛选当前组内:C列为正数、且D列未标记Credit/Debit的行(待更新的目标行)
    Dim positiveUpdateRows = group.Where(Function(r) 
        Convert.ToDecimal(r("C")) > 0 AndAlso 
        Not r("D").ToString().Equals("Credit", StringComparison.OrdinalIgnoreCase) AndAlso 
        Not r("D").ToString().Equals("Debit", StringComparison.OrdinalIgnoreCase)
    ).ToList()
    
    ' 为每个源行匹配一个目标行并更新
    For Each negRow In negativeTargetRows
        Dim matchRow = positiveUpdateRows.FirstOrDefault()
        If matchRow IsNot Nothing Then
            matchRow("D") = "Debit"
            positiveUpdateRows.Remove(matchRow) ' 避免重复匹配
        End If
    Next
    
    Return group ' 返回处理后的整组数据
).CopyToDataTable()

代码说明

  1. 分组逻辑:通过Math.Abs(Convert.ToDecimal(row("C")))将所有绝对值相同的行分到一组,确保互为相反数的行在同一组内。
  2. 筛选行:
    • negativeTargetRows:定位需要匹配的“源行”(比如例子中的C4,值为-1且D列是Credit/Debit)
    • positiveUpdateRows:定位需要更新的“目标行”(比如例子中的C3,值为1且D列未标记)
  3. 匹配与更新:遍历源行,为每个源行找到第一个可用的目标行,将其D列改为Debit,并移除已匹配的目标行防止重复使用。
  4. 返回结果:将所有处理后的行重新组合成新的DataTable,覆盖原变量。

注意事项

  • 确保C列的单元格是数值类型(decimal/double),如果是字符串需要先做类型转换,避免转换异常。
  • 如果需要支持双向匹配(比如正数行标记为Credit时,匹配负数行更新),可以复制一段逻辑,调整正负筛选条件和更新值即可。
  • 若存在多个相同绝对值的相反值,代码会按行顺序匹配,先出现的源行会优先匹配先出现的目标行。

内容的提问来源于stack exchange,提问作者JKL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:25:17