将查询结果显示为以逗号分隔的文字

Posted

技术标签:

【中文标题】将查询结果显示为以逗号分隔的文字【英文标题】:Display results of a query into a literal separated by commas 【发布时间】:2014-03-27 20:01:58 【问题描述】:

目前我有一个文字(称为 unitValues),它显示 SQL 查询的结果(它们是度量单位)。它工作正常,除了我想用逗号分隔每个度量单位。现在,我的代码是如何设置的,最后总是添加一个额外的逗号。所以,而不是:

值1,值2,值3

我明白了:

值1,值2,值3,

有没有办法防止多余的逗号放在查询结果列表的末尾?

这是从数据库中获取 SQL 数据并将其放入字面量的代码:

 protected void getUnits()

    try
    
        System.Data.SqlClient.SqlDataReader dr = null;
        using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
        
            SqlCommand cmd = new SqlCommand("SELECT [name] FROM [baird_UnitOfMeasure]", cn);
            cmd.CommandType = CommandType.Text;
            cn.Open();
            using (IDataReader reader = cmd.ExecuteReader())
            
                while (reader.Read())
                
                    unitValues.Text += (reader["name"].ToString()) +", ";
                
             
            cn.Close();

        
    
    catch (Exception eX)
    
        \\catch error
    

提前致谢!

【问题讨论】:

【参考方案1】:

先附加逗号而不是后面(并绕过第一项):

protected void getUnits()
 
   try
   
    System.Data.SqlClient.SqlDataReader dr = null;
    using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
    
        SqlCommand cmd = new SqlCommand("SELECT [name] FROM [baird_UnitOfMeasure]", cn);
        cmd.CommandType = CommandType.Text;
        cn.Open();
        using (IDataReader reader = cmd.ExecuteReader())
        
            while (reader.Read())
            
               if(!String.IsNullOrEmpty(unitValues.Text))
                  unitValues.Text += ", ";
               
               unitValues.Text += reader["name"].ToString();
            
         
        cn.Close();

    
   
   catch (Exception ex)
   
      \\catch error
   

【讨论】:

【参考方案2】:

您可以直接使用您的 T-SQL 查询来执行此操作,如下所示:

SELECT DISTINCT STUFF((SELECT ', ' + [name]
      FROM [baird_UnitOfMeasure]
      FOR XML PATH ('')), 1, 1, '') AS DelimList
      FROM [baird_UnitOfMeasure]

【讨论】:

【参考方案3】:
unitValues= unitValues.TrimEnd(',');

【讨论】:

那行不通。你必须使 unitValues.TrimEnd(',', ' ')【参考方案4】:
var list = new List<string>();
while (reader.Read())  list.Add(reader["name"]);
unitValues.Text = list.Aggregate( (prev,cur) => prev + ", " + cur);

【讨论】:

如果你要走 List 路线,为什么不unitValues.Text = String.Join(", ", list.ToArray()); 我不知道那个方法,谢谢。

以上是关于将查询结果显示为以逗号分隔的文字的主要内容,如果未能解决你的问题,请参考以下文章

javascript 将字符串数组转换为以逗号分隔的列表

从逗号分隔的值中查询结果并查询要显示的每个值

如何根据oracle plsql中列中的逗号分隔值拆分选择查询行

MYSQL列中的数据以逗号隔开,如何查询?

将子查询的结果聚合为逗号分隔值

SQL中逗号分隔的查询结果转换成单个字符串放到in语句里