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

VB.NET中带条件的DataTable两列值拼接更新问题求助

VB.NET DataTable计算列C的拼接逻辑修正

我需要在VB.NET中对DataTable的A、B两列值进行拼接生成计算列C,需满足以下规则:

  • 若A列值为Null、空字符串或开头是-,则不拼接A列内容
  • 若B列值为Null、空字符串、开头是-或等于"NO COLOR",则不拼接B列内容
  • 拼接时A、B之间用空格分隔,最终结果去除首尾空格

现有代码未实现B列值为"NO COLOR"的处理逻辑,以下是我的代码及期望结果:

现有代码

Public Class Form1
    Public dt As DataTable
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        dt = New DataTable
        dt.Columns.Add("A", GetType(String))
        dt.Columns.Add("B", GetType(String))
        dt.Columns.Add("C", GetType(String), "TRIM(IIF(A Is Null Or SUBSTRING(A, 1, 1) = '-', '', A) + IIF(B Is Null Or SUBSTRING(B, 1, 1) = '-', '', ' ' + B))")
        dt.Rows.Add("BALOTELLY", "OLD WARDAH (02)")
        dt.Rows.Add("TOYOBO FODU THOMPSON", "LIGHT BLACK (12)")
        dt.Rows.Add("MCR", "-")
        dt.Rows.Add("WALLY COTTON CREAP", "-")
        dt.Rows.Add("WALLY COTTON CREAP", "BLACK (23)")
        dt.Rows.Add("-", "-")
        dt.Rows.Add("WALLY COTTON CREAP", "NO COLOR")
        dt.Rows.Add("-", "NO COLOR")
        dt.Rows.Add("", "NO COLOR")
        DataGridView1.DataSource = dt
        Dim CheckedBoxColumn As New DataGridViewCheckBoxColumn
        CheckedBoxColumn.Width = 40
        CheckedBoxColumn.Name = "checkboxcolumn"
        CheckedBoxColumn.HeaderText = "Check"
        DataGridView1.Columns.Insert(0, CheckedBoxColumn)
    End Sub

期望结果

ABC
BALOTELLYOLD WARDAH (02)BALOTELLY OLD WARDAH (02)
TOYOBO FODU THOMPSONLIGHT BLACK (12)TOYOBO FODU THOMPSON LIGHT BLACK (12)
MCR-MCR
WALLY COTTON CREAP-WALLY COTTON CREAP
WALLY COTTON CREAPBLACK (23)WALLY COTTON CREAP BLACK (23)
--
WALLY COTTON CREAPNO COLORWALLY COTTON CREAP
-NO COLOR
NO COLOR

修正方案

问题出在计算列的表达式中未处理B="NO COLOR"的情况,同时还需要补充处理A列为空字符串的场景(原代码只判断了Null和开头为-)。修改后的计算列表达式如下:

dt.Columns.Add("C", GetType(String), "TRIM(IIF(A Is Null OR A = '' OR SUBSTRING(A, 1, 1) = '-', '', A) + IIF(B Is Null OR B = '' OR SUBSTRING(B, 1, 1) = '-' OR B = 'NO COLOR', '', ' ' + B))")

修正说明:

  1. 对A列的判断新增A = '',处理空字符串的情况
  2. 对B列的判断新增B = 'NO COLOR',当B列值为该内容时不进行拼接
  3. 保留原有的TRIM确保结果首尾无多余空格

替换原代码中计算列C的创建语句,即可得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:50:15