修改 C# 分组依据代码以允许字段名称中的空格

本文关键字:字段 空格 许字段 代码 修改 | 更新日期: 2023-09-27 17:55:52

这是参考本答案中提供的代码:在此处输入@Tim-Schmelter的链接描述。

代码是按特定列对数据表进行分组,并向该列添加计数(透视):

   public DataTable GroupBy(string i_sGroupByColumn, string i_sAggregateColumn, DataTable i_dSourceTable)
    {
        DataView dv = new DataView(i_dSourceTable);
        //getting distinct values for group column
        DataTable dtGroup = dv.ToTable(true, new string[] { i_sGroupByColumn });
        //adding column for the row count
        dtGroup.Columns.Add("Count", typeof(int));
        //looping thru distinct values for the group, counting
        foreach (DataRow dr in dtGroup.Rows)
        {
            dr["Count"] = i_dSourceTable.Compute("Count(" + i_sAggregateColumn + ")", i_sGroupByColumn + " = '" + dr[i_sGroupByColumn] + "'");
        }
        //returning grouped/counted result
        return dtGroup;
    }

但是,我的数据表有一列(我无法更改此列),字段名称中有一个空格,即:"解决方案 ID"

当我将其传递到上面的代码中时,使用它:

DataTable Solutions = GroupBy("Solution ID", "Solution ID", tbQ);

。我收到错误:语法错误:"ID"运算符后缺少操作数。

我尝试用 [] 封装,将空格修改为 +,但它不起作用。

是否可以修改上面的代码,接受带有空格的列?

谢谢你,马克

修改 C# 分组依据代码以允许字段名称中的空格

我尝试用 [] 封装,将空格修改为 +,但它不起作用。

将空间更改为+肯定行不通,但封装在括号中应该。 尝试

if(!i_sAggregateColumn.StartsWith("["))
    i_sAggregateColumn = "[" + i_sAggregateColumn + "]";
if(!i_sGroupByColumn.StartsWith("["))
    i_sGroupByColumn = "[" + i_sGroupByColumn + "]";

请注意,如果您的列名称已经包含括号,则必须尝试其他方法。