2013-04-26 119 views
1

我有以下代码:删除最后一个逗号或分隔符从列表C#

DrExistingData = myCommand.ExecuteReader(); 
        if (DrExistingData.HasRows) 
        { 
         string participant = ""; 
         string participants = ""; 

         while (DrExistingData.Read()) 
         { 
          participant = DrExistingData["Name"].ToString(); 
          participants = participant + " , " + participants; 

         } 

          Participant.Text = participants; 
         } 

与会者是该图是用逗号分隔的名称列表中选择一个文本框,但问题是,姓氏也跟着用逗号分隔:

Simren,Preety,jyoti, 我想从列表中删除最后一个逗号。请帮助

回答

7

在您的TextBox文本上使用string.TrimEnd

Participant.Text = participants.TrimEnd(','); 
6

的最有效的方式做,这是特殊情况下的第一个值 - 也注意到,我使用的是循环中的StringBuilder,而不是字符串连接(这是非常残酷的分配):

var builder = new StringBuilder(); 
if(DrExistingData.Read()) { 
    builder.Append(DrExistingData["Name"]); 
    while(DrExistingData.Read()) { 
     builder.Append(',').Append(DrExistingData["Name"]); 
    } 
} 
Participant.Text = builder.ToString(); 
+0

+1这是做这项工作的最有效方法。 – Steve 2013-04-26 07:36:42

+0

谢谢...它的工作完美 – smriti 2013-04-26 09:16:06

5

的另一种方式做你的东西是用string.Join

var participants = new List<string>(); 
while (DrExistingData.Read()) 
{ 
    participants.Add(DrExistingData["Name"].ToString()); 
} 
Participant.Text = string.Join(",", participants); 
+0

我希望你不介意 - 我添加了一个例子 – 2013-04-26 07:35:01

+0

@MarcGravell谢谢)我正在进行添加示例) – 2013-04-26 07:36:09

0

在.NET 4中,你可以做

var drExistingData = myCommand.ExecuteReader(); 
participants.Text = string.Join(", ", 
           drExistingData.Cast<IDataRecord>() 
               .Select(record => record["Name"].ToString())); 

对于.NET 3.5和更早的版本,你必须添加一个.ToArray()

var drExistingData = myCommand.ExecuteReader(); 
participants.Text = string.Join(", ", 
           drExistingData.Cast<IDataRecord>() 
               .Select(record => record["Name"].ToString()) 
               .ToArray()); 
相关问题