如何修改asp:listbox中的选定项目以使用正确的字符串?

时间:2014-06-20 14:43:52

标签: c# asp.net

让我们说我想为用户创建一个应用程序来选择故障部门进行报告。用户可以从asp:ListBox进入并选择多个故障部门,当用户点击发送时,电子邮件会被读取,

We are having trouble in the following departments: DepartmentA, DepartmentB.

我能够找到如何正确地将项目从循环中循环出来,但最后一项有一个 , 最后一项的结尾。例如,不是如上所述阅读正确的方法,它看起来像这样:

We are having trouble in the following departments: DepartmentA, DepartmentB,.

这是我的代码:

string DeptID = string.Empty;
foreach (ListItem li in lstDSXDepartment.Items)
{
    if (li.Selected == true)
    {
        DeptID += li.Value + ",";
    }
}

Response.Write("We are having trouble with the following Departments: " + DeptID + ".");

如何修复字符串,以便逗号不会显示在选择列表的末尾?

2 个答案:

答案 0 :(得分:3)

您可以使用string.join。这更容易。

var ids = lstDSXDepartment.Items
    .Cast<ListItem>()
    .Where(x=> x.Selected)
    .Select(x=> x.Value);
string text = string.Join(",", ids);

其他想法:

如果您想使用原始方法,则应考虑使用StringBuilder而不是String,因为 String是不可变的

StringBuilder将根据项目数量显着提高性能。

答案 1 :(得分:1)

只需使用修剪功能即可删除不需要的逗号。

DeptID = DeptID.TrimEnd(',');

在写完之前在循环之后使用。

注意TrimEnd函数返回一个由原始字符串修改的新副本,因此您必须将其存储回原始变量中。这是因为C#中的字符串不可变