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
期望结果
| A | B | C |
|---|---|---|
| BALOTELLY | OLD WARDAH (02) | BALOTELLY OLD WARDAH (02) |
| TOYOBO FODU THOMPSON | LIGHT BLACK (12) | TOYOBO FODU THOMPSON LIGHT BLACK (12) |
| MCR | - | MCR |
| WALLY COTTON CREAP | - | WALLY COTTON CREAP |
| WALLY COTTON CREAP | BLACK (23) | WALLY COTTON CREAP BLACK (23) |
| - | - | |
| WALLY COTTON CREAP | NO COLOR | WALLY 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))")
修正说明:
- 对A列的判断新增
A = '',处理空字符串的情况 - 对B列的判断新增
B = 'NO COLOR',当B列值为该内容时不进行拼接 - 保留原有的
TRIM确保结果首尾无多余空格
替换原代码中计算列C的创建语句,即可得到符合预期的结果。
内容的提问来源于stack exchange,提问作者user22579796
相关产品推荐
相关产品推荐

