2014-03-27 72 views
1

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

值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 
    } 

提前感谢!

回答

2

追加逗号第一,而不是后(并绕过第一项):

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 
    } 
} 
+0

刚试过,它的工作!谢谢! –

0
unitValues= unitValues.TrimEnd(','); 
+0

这不起作用。你必须做出这个unitValues.TrimEnd(',','') – brz

0
var list = new List<string>(); 
while (reader.Read()) list.Add(reader["name"]); 
unitValues.Text = list.Aggregate((prev,cur) => prev + ", " + cur); 
+1

如果你要去List路线,为什么不''unitValues.Text = String.Join(“,”,list.ToArray());' – CSL

+0

I不知道那种方法,谢谢。 – elios264

1

,您可以直接与你的T-SQL查询,如下做到这一点:

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

这很容易,也是性能的最佳方式 – Wilson

相关问题